定義
數據庫存儲引擎是數據庫底層軟件組織,數據庫管理系統(DBMS)使用數據引擎進行建立、查詢、更新和刪除數據。不一樣的存儲引擎提供不一樣的存儲機制、索引技巧、鎖定水平等功能,使用不一樣的存儲引擎,還能夠得到特定的功能。數據庫
經常使用的MySQL存儲引擎
InnoDB
InnoDB 是 MySQL 默認的事務型存儲引擎,只有在須要 InnoDB 不支持的特性時,才考慮使用其它存儲引擎。安全
採用 MVCC 來支持高併發,而且實現了四個標準的隔離級別,默認級別是可重複讀。併發
表是基於聚簇索引創建的,它對主鍵的查詢性能有很高的提高。函數
內部作了不少優化,包括從磁盤讀取數據時採用的可預測性讀、可以自動在內存中建立哈希索引以加速讀操做的自適應哈希索引、可以加速插入操做的插入緩衝區等。高併發
經過一些機制和工具支持真正的熱備份。工具
MyISAM
MyISAM 提供了大量的特性,包括全文索引、壓縮、空間函數(GIS)等。但 MyISAM 不支持事務和行級鎖,並且崩潰後沒法安全恢復。性能
只能對整張表加鎖,而不是針對行。優化
能夠手工或者自動執行檢查和修復操做,可是和事務恢復以及崩潰恢復不一樣,可能致使一些數據丟失,並且修復操做是很是慢的。spa
能夠包含動態或者靜態的行。設計
若是指定了 DELAY_KEY_WRITE 選項,在每次修改執行完成時,不會當即將修改的索引數據寫入磁盤,而是會寫到內存中的鍵緩衝區,只有在清理鍵緩衝區或者關閉表的時候纔會將對應的索引塊寫入磁盤。這種方式能夠極大的提高寫入性能,可是在數據庫或者主機崩潰時會形成索引損壞,須要執行修復操做。
若是表在建立並導入數據之後,不會再進行修改操做,那麼這樣的表適合採用 MyISAM 壓縮表。
對於只讀數據,或者表比較小、能夠容忍修復操做,則依然能夠繼續使用 MyISAM。
MyISAM 設計簡單,數據以緊密格式存儲,因此在某些場景下性能很好。
比較
- 事務:InnoDB 是事務型的。
- 備份:InnoDB 支持在線熱備份。
- 崩潰恢復:MyISAM 崩潰後發生損壞的機率比 InnoDB高不少,並且恢復的速度也更慢。
- 併發:MyISAM 只支持表級鎖,而 InnoDB 還支持行級鎖。
- 其它特性:MyISAM 支持全文索引,地理空間索引。