Mysql存盤引擎
1.MyISAM MySQL 5.0 之前的默認資料庫引擎,最為常用,擁有較高的插入,查詢速度,但不支持事務.
2.InnoDB事務型資料庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5 起成為默認資料庫引擎.
3.BDB源 自 Berkeley DB,事務型資料庫的另一種選擇,支持Commit 和Rollback 等其他事務特性
4.Memory所有資料置于記憶體的存盤引擎,擁有極高的插入,更新和查詢效率,但是會占用和資料量成正比的記憶體空間,并且其內容會在 MySQL 重新啟動時丟失
5.Merge將一定數量的 MyISAM 表聯合而成一個整體,在超大規模資料存盤時很有用
6.Archive非常適合存盤大量的獨立的,作為歷史記錄的資料,因為它們不經常被讀取,Archive 擁有高效的插入速度,但其對查詢的支持相對較差
7.Federated將不同的 MySQL 服務器聯合起來,邏輯上組成一個完整的資料庫,非常適合分布式應用
8.Cluster/NDB高冗余的存盤引擎,用多臺資料機器聯合提供服務以提高整體性能和安全性,適合資料量大,安全和性能要求高的應用
9.CSV 邏輯上由逗號分割資料的存盤引擎,它會在資料庫子目錄里為每個資料表創建一個 .csv 檔案,這是一種普通文本檔案,每個資料行占用一個文本行,CSV 存盤引擎不支持索引,
10.BlackHole 黑洞引擎,寫入的任何資料都會消失,一般用于記錄 binlog 做復制的中繼
11.EXAMPLE 存盤引擎是一個不做任何事情的存根引擎,它的目的是作為 MySQL 源代碼中的一個例子,用來演示如何開始撰寫一個新存盤引擎,同樣,它的主要興趣是對開發者,EXAMPLE 存盤引擎不支持編索引,另外,MySQL 的存盤引擎介面定義良好,有興趣的開發者可以通過閱讀檔案撰寫自己的存盤引擎,
InnoDB
InnoDB是MySQL默認的事務型存盤引擎,只有在需要他不支持的特性時,才考慮使用期它存盤引擎,
實作了四個標準的隔離級別,默認級別是可重復讀(REPEATABLE READ).在可重復讀隔離級別下,通過多版本并發控制(MVCC)+Next-Key Locking防止幻讀,
主索引是聚簇索引,在索引中保存了資料,從而避免直接讀取磁盤,因此對查詢性能有很大的提升,
內部做了很多優化,包括從磁盤讀取資料時采用的可預測性讀、能夠加快讀操作并且自動創建的自適應哈希索引、能夠加速插入操作的插入緩沖區等,
支持真正的在線熱備份,其它存盤引擎不支持在線熱備份,要獲取一致性視圖需要停止對所有表的寫入,而在讀寫混合場景中,停止寫入可能也意味著停止讀取,
MyISAM
設計簡單,資料以緊密格式存盤,對于只讀資料,或者表比較小、可以容忍修復操作,則依然可以使用它,
提供了大量的特性,包括壓縮表、空間資料索引等,
不支持事務,
不支持行級鎖,只能對整張表加鎖,讀取時會對需要讀到的所有表加共享鎖,寫入時則對表加排它鎖,但在表有讀取操作的同時,也可以往表中插入新的記錄,這被稱為并發插入(CONCURRENT INSERT),
可以手工或者自動執行檢查和修復操作,但是和事務恢復以及崩潰恢復不同,可能導致一些資料丟失,而且修復操作是非常慢的,
如果指定了 DELAY_KEY_WRITE 選項,在每次修改執行完成時,不會立即將修改的索引資料寫入磁盤,而是會寫到記憶體中的鍵緩沖區,只有在清理鍵緩沖區或者關閉表的時候才會將對應的索引塊寫入磁盤,這種方式可以極大的提升寫入性能,但是在資料庫或者主機崩潰時會造成索引損壞,需要執行修復操作,
比較
- 事務:InnoDB 是事務型的,可以使用 Commit 和 Rollback 陳述句,
- 并發:MyISAM 只支持表級鎖,而 InnoDB 還支持行級鎖,
- 外鍵:InnoDB 支持外鍵,
- 備份:InnoDB 支持在線熱備份,
- 崩潰恢復:MyISAM 崩潰后發生損壞的概率比 InnoDB 高很多,而且恢復的速度也更慢,
- 其它特性:MyISAM 支持壓縮表和空間資料索引,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/87440.html
標籤:MySQL
上一篇:MySQL Execute Plan--Index Merge特性
下一篇:簡單的圖片排序
