程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL-存儲引擎簡析

MySQL-存儲引擎簡析

編輯:MySQL綜合教程


Mysql邏輯架構視圖     主要存儲引擎:   www.2cto.com   引擎   Mysql版本 事務 鎖粒度 主要引用 忌用 InnoDB 全部 支持 支持Mvcc行級鎖 事務處理 MyISAM 全部 不支持 支持並發插入的表鎖 Select,insert高負載 讀寫並重的場合 MyISAM  Merge 全部 不支持 支持並發插入的表鎖 分段歸檔, 許多全局查找 Memory(HEAP) 全部 不支持 表鎖 中間計算,靜態數據查證 大型數據集,持久性存儲,重啟後數據丟失 Falcon 6.0 支持 支持Mvcc行級鎖 事務處理 Archive 4.1 支持 支持Mvcc行級鎖 日志記錄,聚合分析,只支持insert,select操作 需要隨機讀取 刪除 CSV 4.1 不支持 表鎖 日志記錄,大規模加載外部數據 需要隨機讀取,索引等 NDB Cluster 5.0 支持 行級鎖 高可用集群 典型引用 Maria 6.x 支持 支持mvcc行級鎖 替代MyISAM 可以通過show table status like '表名稱'\G 來查看表的信息    鎖粒度:   www.2cto.com     1.表鎖 (Table Lock)        當一個用戶對表進行寫操作(新增,刪除,修改), 會獲得一個寫鎖,寫鎖會禁止其他用戶的讀寫操作,當無人做寫操作時,其他用戶才能獲得讀鎖,讀鎖與讀鎖之間不會沖突。表鎖是最小鎖策略,其性能良好,表鎖由Mysql本身 和 存儲引擎實現。   2.行級鎖(Row Lock)     行級鎖可以支持最大的並發處理,同時也帶來了最大鎖開銷,行級鎖在InnoDB,Falcon存儲引擎出以實現。 行級鎖由存儲引擎實現,而不是Mysql服務器本身。   3.MVCC行級鎖      MVCC 是一種多版本並發控制(Multiversion Concurrency Control)的技術,MVCC不是mysql獨有的技術,Oracle,PostgreSQL等其他數據庫也使用了該技術。   每種存儲引擎實現MVCC的方式是不同的,例如樂觀並發控制,悲觀並發控制,下面以Innodb的實現方式 說說其簡要工作原理:   Innodb通過為每個數據行增加兩個隱士的字段來實現MVCC,這兩個隱士字段記錄了行的創建的時間,以及過期時間(刪除時間),每一行都存儲了事件發生時的系統版本號,用來替代事件發生時的實際時間。每一次開啟一個新的事務時,版本號都會遞增,每個事務都會保存它在開始時的“系統版本”的記錄,而每個查詢都會根據事務的版本號,檢查每行數據的版本號。   SELECT  www.2cto.com         Innodb 檢查每行數據,確保它們符合兩個標准      *Innodb只查找版本號小於或等於當前版本號的數據,這確保了當前事務讀取的數據行都是在事務開始前已存在,或者是當前事務創建或修改的行。      *數據行的刪除標識必須是未定義,或者是大於事務版本的,這確保了查詢出來的數據在事務開始時是未被刪除的。   INSERT      Innodb為新增的數據行記錄當前版本號   DELETE     修改要刪除行的過期時間標識   UPDATE      為每個需要更新的行建立一個新的行的拷貝,並為新的行拷貝記錄當前系統版本。也為更新前的數行記錄系統版本號,作為舊行的刪除版本標識。保存這些額外記錄的好處是大多數並發操作都不必申請枷鎖,這使讀操作變得更快,因為讀操作是要選取符合標准的數據行即可,這種方式的缺點是:存儲引擎必須為每行數據存儲更多的額外數據,浪費空間,做更多的檢查工作,以及整理一些額外的數據帶來的開銷。  www.2cto.com     加鎖策略 並發 系統開銷 引擎 表級加鎖 最低 最低 MyISAM,Merge,MyISAM  Merge 行級加鎖 高 高 NDB Cluster 支持MVCC的行級加鎖 最高 最高 InnoDB,Falcon 選擇合適的引擎:   1.事務       如果應用需要事務處理操作,Innodb仍是最穩定的,如果不需要事務,主要操作是處理一些SELECT和INSERT操作或專用日志記錄,那麼MYISAM是一個不錯的選擇。   2.並發   3.備份   4.崩潰後恢復

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved