MySql數據庫有很多種存儲引擎,不同的引擎特點不同,有各自的優點。最近在看MySQL技術內幕,剛好做下筆記。
這個是自從MySQL 5.5.8版本後的默認存儲引擎,也是我平時使用的搜索引擎。支持事務操作,主要面向聯機事務處理的應用,特點是行鎖設計,支持外鍵,也支持類似Oracle的非鎖定讀這種默認讀取操作不會產生鎖。
通過使用版本控制來獲得高並發並且實現了SQL標准的四種隔離級別,默認是REPEATABLE級別(可以防止髒讀和非重復讀)。同時使用一種next-key locking的策略來二次寫自適應哈希索引,預讀等高性能和高可用的功能。
InnoDB是一種cluster 引擎。
這種引擎不支持事務,也不支持表鎖設計,但支持全文索引。
這是在MysQL 5.5.8之前的默認存儲引擎(Windows除外)。
這個引擎我沒有使用過,不過這個引擎好像比較強大。
它是集群存儲引擎,類似RAC集群的,是面向OLTP的數據庫應用的。
這個引擎就是把所有的數據都放在了內存中,所以呢,重啟或崩潰的話,所有的數據都會丟失了。所以更適合臨時表這種應用場景,數據倉庫的維度表這些應用。默認是哈希索引,不是B+樹的。
這個是一個第三方的存儲引擎,它的存儲是按照列來存儲的。並非行存儲。所以很適合OLAP的數據應用。
網易開發的引擎,作為自己內部使用,不支持事務管理(以後好像要支持的)。
還有很多其他引擎。