mysql引擎總結 MySQL儲存引擎對比總結

2021-10-20 23:10:03 字數 2213 閱讀 4210

儲存引擎是資料庫的核心,對於mysql來說,儲存引擎是以外掛程式的形式執行的。雖然mysql支援種類繁多的儲存引擎,但是常用的就那麼幾種。這篇文章主要是對其進行乙個總結和對比。

一、引言

在mysql5之後,支援的儲存引擎有十幾個,但是常用的就那麼幾種,而且預設支援的也是innodb,既然要進行乙個對比,我們就要從不同的維度來看一下。

我們可以使用命令來看看當前資料庫可以支援的儲存引擎有哪些。

在這裡我們發現預設支援了9種。還是比較多的,下面我們進行乙個對比。

不同的儲存引擎都有各自的特點,以適應不同的需求,如表所示。為了做出選擇,首先要考慮每乙個儲存引擎提供了哪些不同的功能。

在這裡我們列舉了一些特點並作出了比較。下面我們來具體分析對比一下。

二、儲存引擎

1、myisam

使用這個儲存引擎,每個myisam在磁碟上儲存成三個檔案。

(1)frm檔案:儲存表的定義資料

(2)myd檔案:存放表具體記錄的資料

(3)myi檔案:儲存索引

frm和myi可以存放在不同的目錄下。myi檔案用來儲存索引,但僅儲存記錄所在頁的指標,索引的結構是b+樹結構。下面這張圖就是myi檔案儲存的機制:

從這張圖可以發現,這個儲存引擎通過myi的b+樹結構來查詢記錄頁,再根據記錄頁查詢記錄。並且支援全文索引、b樹索引和資料壓縮。

支援資料的型別也有三種:

(1)靜態固定長度表

這種方式的優點在於儲存速度非常快,容易發生快取,而且表發生損壞後也容易修復。缺點是佔空間。這也是預設的儲存格式。

(2)動態可變長表

優點是節省空間,但是一旦出錯恢復起來比較麻煩。

(3)壓縮表

上面說到支援資料壓縮,說明肯定也支援這個格式。在資料檔案發生錯誤時候,可以使用check table工具來檢查,而且還可以使用repair table工具來恢復。

有乙個重要的特點那就是不支援事務,但是這也意味著他的儲存速度更快,如果你的讀寫操作允許有錯誤資料的話,只是追求速度,可以選擇這個儲存引擎。

2、innodb

innodb是預設的資料庫儲存引擎,他的主要特點有:

(1)可以通過自動增長列,方法是auto_increment。

(2)支援事務。預設的事務隔離級別為可重複度,通過mvcc(併發版本控制)來實現的。

(3)使用的鎖粒度為行級鎖,可以支援更高的併發;

(4)支援外來鍵約束;外來鍵約束其實降低了表的查詢速度,但是增加了表之間的耦合度。

(6)在innodb中存在著緩衝管理,通過緩衝池,將索引和資料全部快取起來,加快查詢的速度;

(7)對於innodb型別的表,其資料的物理組織形式是聚簇表。所有的資料按照主鍵來組織。資料和索引放在一塊,都位於b+數的葉子節點上;

當然innodb的儲存表和索引也有下面兩種形式:

(1)使用共享表空間儲存:所有的表和索引存放在同乙個表空間中。

對於innodb來說,比較大的特點在於支援事務。但是這是以損失效率來換取的。

3、memory

將資料存在記憶體,為了提高資料的訪問速度,每乙個表實際上和乙個磁碟檔案關聯。檔案是frm。

(1)支援的資料型別有限制,比如:不支援text和blob型別,對於字串型別的資料,只支援固定長度的行,varchar會被自動儲存為char型別;

(2)支援的鎖粒度為表級鎖。所以,在訪問量比較大時,表級鎖會成為memory儲存引擎的瓶頸;

(3)由於資料是存放在記憶體中,一旦伺服器出現故障,資料都會丟失;

(4)查詢的時候,如果有用到臨時表,而且臨時表中有blob,text型別的字段,那麼這個臨時表就會轉化為myisam型別的表,效能會急劇降低;

(5)預設使用hash索引。

(6)如果乙個內部表很大,會轉化為磁碟表。

在這裡只是給出3個常見的儲存引擎。使用哪一種引擎需要靈活選擇,乙個資料庫中多個表可以使用不同引擎以滿足各種效能和實際需求,使用合適的儲存引擎,將會提高整個資料庫的效能

mysql引擎總結 MySQL引擎總結

檢視引擎情況 show engines 檢視預設的資料庫配置 show variables like default storage engine 更改資料庫引擎 修改配置檔案my.ini,mysqld 最後新增為上default storage engine innodb,重啟服務 修改某張表的引...

mysql引擎總結 MySQL儲存引擎總結

儲存引擎 儲存引擎其實就是如何實現儲存資料,如何為儲存的資料建立索引以及如何更新,查詢資料等技術實現的方法。儲存引擎的選擇 1 是否需要支援事務 2 是否需要使用熱備 3 崩潰恢復 能否接受崩潰 4 是否需要外來鍵支援 myisam 1 每當建立乙個myisam引擎的表時,就會在本地磁碟上建立三個檔...

MySQL引擎總結

儲存引擎檢視 mysql提供的查詢儲存引擎的功能 如圖 預設的引擎為innodb 這裡使用的sqlyog,mysql版本為5.5.28 檢視mysql版本的命令為 select version innodb儲存引擎 1 支援事務 2 支援行級鎖,併發較高時,效率較高 3 支援外來鍵約束 4 不支援全...