Mysql存儲引擎

原文基本來自《MySQL 5.7 從入門到精通》第3章

InnoDB存儲引擎

InnoDB是事務型數據庫的首選引擎,支持事物安全表(ACID),支持行鎖定和外鍵
(1)InnoDB給MySQL提供了具有提交、回滾和崩潰恢復能力的事物安全(ACID兼容)存儲引擎。InnoDB鎖定在行級並且也在SELECT語句中提供一個類似Oracle的非鎖定讀。這些功能增加了多用戶部署和性能。
(2)InnoDB是爲處理巨大數據量的最大性能設計。它的CPU效率可能是任何其他基於磁盤的關係數據庫引擎所不能匹敵的。
(3)InnoDB存儲引擎完全與MySQL服務器整合,InnoDB存儲引擎爲在主內存中緩存數據和索引數據而維持它自己的緩衝池。InnoDB將它的表和索引存在一個邏輯表空間,表空間可以包含數個文件(或原始磁盤分區)。InnoDB表可以是任何尺寸,即使在文件尺寸被限制爲2GB的操作系統上。
(4)InnoDB支持外鍵完整性約束(FROEIGN KEY)

MyISAM存儲引擎

MyISAM擁有較高的插入、查詢速度,但不支持事物。
(1)大文件(達63位文件長度)在支持大文件的文件系統和操作系統上被支持
(2)當把刪除、更新及插入操作混合使用的時候,動態尺寸的行產生更少碎片。這要通過合併相鄰被刪除的塊,以及下一個塊被刪除,就擴展到下一塊來自動完成。
(3)每個MyISAM表最大索引數是64,這可以通過重新編譯來改變。每個索引最大的列數是16個。
(4)最大的鍵長度是1000B,這也可以通過編譯改變。對於鍵長度超過250B的情況,一個超過1024B的鍵將被用上。
(5)BLOB和TEXT列可以被索引
(6)NULL值被允許在索引中。這個值佔每個鍵的0~1個字節。
(7)所有數字鍵值以高字節優先被存儲以允許一個更高的索引壓縮。
(8)每表一個AUTO_INCREMENT列的內部處理。MyISAM爲INSERT和UPDATE操作自動更新這一列。這使得AUTO_INCREMENT列更快。
(9)可以把數據文件和索引文件放在不同目錄。
(10)每個字符列可以有不同的字符集。
(11)有VARCHAR的表可以固定或動態記錄長度。
(12)VARCHAR和CHAR列可以多達64KB
使用MyISAM引擎創建數據庫,將產生3個文件。文件的名字以表的名字開始,擴展指出文件類型:frm文件存儲定義,數據文件的擴展名爲.MYD(MYData),索引文件的擴展名是.MYI(MYIndex)。

存儲引擎比較

功能 MyISAM InnoDB
存儲限制 256TB 64TB
支持事物
支持全文索引
支持數索引
支持哈希索引
支持數據緩存
支持外鍵

如果要提交、回滾和崩潰恢復能力的事物安全(ACID兼容)能力,並要求實現併發控制,InnoDB是個很好的選擇。如果數據表主要用來插入和查詢記錄,則MyISAM引擎能提供較高的處理效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章