下面我們重點介紹幾種常用的儲存引擎並對比各個儲存引擎之間的區別和推薦使用方式。
特點myisam
bdbmemory
innodb
archive
儲存限制
沒有沒有
有64tb
沒有事務安全
支援支援
鎖機制表鎖
頁鎖表鎖
行鎖行鎖
b樹索引
支援支援
支援支援
雜湊索引
支援支援
全文索引
支援集群索引
支援資料快取
支援支援
索引快取
支援支援
支援資料可壓縮
支援支援
空間使用低低
n/a高
非常低記憶體使用低低
中等高低批量插入的速度高高
高低非常高支援外來鍵支援
mysql引擎
說明myisam
記憶體中只快取索引,不快取資料;
不支援事務;
只支援表級鎖,支援insert操作和select操作併發進行;
適合讀多寫少的應用,如web;
支援全文索引;
innodb
索引和資料都可以快取到記憶體中;
支援事務;
支援行級鎖,可實現更高的併發度;
支援故障恢復;
支援外來鍵約束;
支援4種不同的事務隔離級別;
memory
所有資料均存在記憶體中,可提供高速的查詢效率;
一旦重啟資料庫(包括宕機),將丟失所有資料;
不支援blob和text型別;
資料大小必須小於記憶體容量;
其它特性類似於myisam;
merge
將一系列等同的myisam表以邏輯方式組合在一起,並作為1個物件引用它們。
高併發時,會導致適用的檔案控制代碼數劇增;
適用於資料倉儲等環境。
archive
可將大量的資料壓縮儲存;
不支援索引;
支援insert和select,不支援delete, replace和 update;
支援行級鎖;
federated
能夠將多個分離的mysql伺服器鏈結起來,從多個物理伺服器建立乙個邏輯資料庫;
不支援事務;
不支援alter table等直接修改表結構的ddl操作;
不支援prepare語句;
不支援查詢快取;
blackhole
不會儲存任何資料,僅記錄日誌;
適用於日誌統計、過濾、同步中間層等;
csv將資料以逗號分隔的格式儲存在文字檔案中;
不支援索引;
1、myisam是mysql的預設儲存引擎,當create建立新錶時,未指定新錶的儲存引擎時,預設使用myisam。
每個myisam在磁碟上儲存成三個檔案。檔名都和表名相同,副檔名分別是.frm(儲存表定義)、.myd (mydata,儲存資料)、.myi (myindex,儲存索引)。資料檔案和索引檔案可以放置在不同的目錄,平均分布io,獲得更快的速度。 myisam管理非事務表。它提供高速儲存和檢索,以及全文搜尋能力。如果應用中需要執行大量的select查詢,那麼myisam是更好的選擇。
該引擎還支援索引延遲更新,對於update速度較快。
2、innodb儲存引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比myisam的儲存引擎,innodb寫的處理效率差一些並且會占用更多的磁碟空間以保留資料和索引。innodb用於事務處理應用程式,具有眾多特性,包括acid事務支援。如果應用中需要執行大量的insert或update操作,則應該使用innodb,這樣可以提高多使用者併發操作的效能。該引擎儲存表基於聚簇索引建立,輔助索引會包含主鍵列,如果想在此表上建立很多索引,則應爭取把主鍵建的小寫。任何改變innodb表結構的操作,都會導致整個表的重建,包括重建所有的列,所以需要花費很長的時間。
選擇標準: 根據應用特點擊擇合適的儲存引擎,對於複雜的應用系統可以根據實際情況選擇多種儲存引擎進行組合。下面是常用儲存引擎的適用環境:
1、myisam:預設的mysql外掛程式式儲存引擎,它是在web、資料倉儲和其他應用環境下最常使用的儲存引擎之一
2、innodb:用於事務處理應用程式,具有眾多特性,包括acid事務支援。
3、memory:將所有資料儲存在ram中,在需要快速查詢引用和其他類似資料的環境下,可提供極快的訪問。
4、merge:允許mysql dba或開發人員將一系列等同的myisam表以邏輯方式組合在一起,並作為1個物件引用它們。對於諸如資料倉儲等vldb環境十分適合。
myisam
:預設的
mysql
外掛程式式儲存引擎,它是在
web、資料倉儲和其他應用環境下最常使用的儲存引擎之
一。注意,通過更改storage_engine配置變數,能夠方便地更改mysql伺服器的預設儲存引擎。
innodb
:用於事務處理應用程式,具有眾多特性,包括
acid
事務支援。
bdb:可替代
innodb
的事務引擎,支援
commit
、rollback
和其他事務特性。
memory
:將所有資料儲存在
ram中,在需要快速查詢引用和其他類似資料的環境下,可提供極快的訪問。
merge
:允許mysql dba
或開發人員將一系列等同的
myisam
表以邏輯方式組合在一起,並作為
1個物件引用
它們。對於諸如資料倉儲等vldb環境十分適合。
archive
:為大量很少引用的歷史、歸檔、或安全審計資訊的儲存和檢索提供了完美的解決方案。
federated
:能夠將多個分離的
mysql
伺服器鏈結起來,從多個物理伺服器建立乙個邏輯資料庫。十分適合於
分布式環境或資料集市環境。
cluster/ndb
:mysql
的簇式資料庫引擎,尤其適合於具有高效能查詢要求的應用程式,這類查詢需求還要求
具有最高的正常工作時間和可用性。
other
:其他儲存引擎包括
csv(引用由逗號隔開的用作資料庫表的檔案),
blackhole
(用於臨時禁止對資料庫的應用程式輸入),以及
example
Mysql儲存引擎對比
下述儲存引擎是最常用的 myisam 預設的mysql外掛程式式儲存引擎,它是在web 資料倉儲和其他應用環境下最常使用的儲存引擎之一。注意,通過更改storage engine配置變數,能夠方便地更改mysql伺服器的預設儲存引擎。innodb 用於事務處理應用程式,具有眾多特性,包括acid事務...
Mysql儲存引擎對比
資料庫儲存引擎是資料庫底層軟體組織,資料庫管理系統 dbms 使用資料引擎進行建立 查詢 更新和刪除資料。不同的儲存引擎提供不同的儲存機制 索引技巧 鎖定水平等功能,使用不同的儲存引擎,還可以獲得特定的功能。現在許多不同的資料庫管理系統都支援多種不同的資料引擎。mysql的核心就是儲存引擎。mysq...
mysql儲存引擎對比
mysql儲存引擎對比 其中,最常見的myisam和innodb儲存引擎的對比如下 myisam innodb 預設儲存引擎 5.5版本以前的預設儲存引擎 5.5版本及以後的預設儲存引擎 acid事務支援 不支援支援 查詢效率高低 鎖級別表級鎖定 行級鎖定 外來鍵不支援 支援全文型別索引 支援不支援...