MySql儲存引擎特性對比

2022-02-02 18:22:38 字數 1466 閱讀 6959

下表顯示了各種儲存引擎的特性:

其中最常見的兩種儲存引擎是myisam和innodb

剛接觸mysql的時候可能會有些驚訝,竟然有不支援事務的儲存引擎,學過關係型資料庫理論的人都知道,事務是關係型資料庫的核心。但是在現實應用中(特別是網際網路),為了提高效能,在某些場景下可以擯棄事務。下面一一介紹各種儲存引擎:

myisam是mysql官方提供預設的儲存引擎,其特點是不支援事務、表鎖和全文索引,對於一些olap系統,操作速度快。

每個myisam在磁碟上儲存成三個檔案。檔名都和表名相同,副檔名分別是.frm(儲存表定義)、.myd (mydata,儲存資料)、.myi (myindex,儲存索引)。這裡特別要注意的是myisam不快取資料檔案,只快取索引檔案。

回到頂部

innodb儲存引擎支援事務,主要面向oltp方面的應用,其特點是行鎖設定、支援外來鍵,並支援類似於oracle的非鎖定讀,即預設情況下讀不產生鎖。innodb將資料放在乙個邏輯表空間中(類似oracle)。innodb通過多版本併發控制來獲得高併發性,實現了ansi標準的4種隔離級別,預設為repeatable,使用一種被稱為next-key locking的策略避免幻讀。

對於表中資料的儲存,innodb採用類似oracle索引組織表clustered的方式進行儲存。

innodb 儲存引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比myisam的儲存引擎,innodb 寫的處理效率差一些並且會占用更多的磁碟空間以保留資料和索

引。回到頂部

ndb儲存引擎是乙個集群儲存引擎,類似於oracle的rac,但它是share nothing的架構,因此能提供更高階別的高可用性和可擴充套件性。ndb的特點是資料全部放在記憶體中,因此通過主鍵查詢非常快。

關於ndb,有乙個問題需要注意,它的連線(join)操作是在mysql資料庫層完成,不是在儲存引擎層完成,這意味著,複雜的join操作需要巨大的網路開銷,查詢速度會很慢。

回到頂部

memory儲存引擎(之前稱為heap)將表中資料存放在記憶體中,如果資料庫重啟或崩潰,資料丟失,因此它非常適合儲存臨時資料。

回到頂部

正如其名稱所示,archive非常適合儲存歸檔資料,如日誌資訊。它只支援insert和select操作,其設計的主要目的是提供高速的插入和壓縮功能。

回到頂部

federated儲存引擎不存放資料,它至少指向一台遠端mysql資料庫伺服器上的表,非常類似於oracle的透明閘道器。

回到頂部

maria儲存引擎是新開發的引擎,其設計目標是用來取代原有的myisam儲存引擎,從而成為mysql預設的儲存引擎。

最後需要強調一點,雖然mysql有非常多的儲存引擎,但它們之間不存在優劣關係,而是根據不同的應用選擇適合自己業務的儲存引擎。如果你能力夠強,也可以自己修改或開發儲存引擎,這不就是開源的魅力所在嗎?

本文**:

mysql引擎特性 Mysql儲存引擎特性總結

幾個常用儲存引擎的特點 下面我們重點介紹幾種常用的儲存引擎並對比各個儲存引擎之間的區別和推薦使用方式。特點myisam bdbmemory innodb archive 儲存限制 沒有沒有 有64tb 沒有事務安全 支援支援 鎖機制表鎖 頁鎖表鎖 行鎖行鎖 b樹索引 支援支援 支援支援 雜湊索引 支...

mysql儲存引擎對比

下面我們重點介紹幾種常用的儲存引擎並對比各個儲存引擎之間的區別和推薦使用方式。特點myisam bdbmemory innodb archive 儲存限制 沒有沒有 有64tb 沒有事務安全 支援支援 鎖機制表鎖 頁鎖表鎖 行鎖行鎖 b樹索引 支援支援 支援支援 雜湊索引 支援支援 全文索引 支援集...

Mysql儲存引擎對比

下述儲存引擎是最常用的 myisam 預設的mysql外掛程式式儲存引擎,它是在web 資料倉儲和其他應用環境下最常使用的儲存引擎之一。注意,通過更改storage engine配置變數,能夠方便地更改mysql伺服器的預設儲存引擎。innodb 用於事務處理應用程式,具有眾多特性,包括acid事務...