天天看點

MySQL 存儲引擎

簡介

MySQL中的資料用各種不同的技術存儲在檔案(或者記憶體)中;

每一種技術都使用不同的存儲機制、索引技巧、鎖定水準并且最終提供廣泛的功能和能力;

這些不同的實作資料存儲的技術在MySQL的整體架構中邏輯化為“存儲引擎層”;

存儲引擎,通常又被稱作“表類型”(即可以在建立表時指定存儲引擎,但無法對某一資料庫指定存儲引擎)

檢視

可通過檢視表的狀态資訊獲得表所使用的存儲引擎類别:

修改預設存儲引擎:

各存儲引擎及其特性

InnoDB

MyISAM

ARCHIVE

CSV

1

2

<code>将資料存儲為csv格式,不支援索引</code>

<code>僅适用于資料交換場景</code>

BLACKHOLE

<code>沒有存儲機制,任何發往此引擎的資料都會丢棄</code>

<code>由于其會記錄二進制日志,故常用于多級複制架構中作中轉伺服器</code>

MEMORY

3

4

<code>資料儲存在記憶體中,即是一個記憶體表</code>

<code>僅支援</code><code>hash</code><code>索引,使用表級鎖</code>

<code>不支援blob和text資料類型</code>

<code>常用于儲存中間資料,如周期性的聚合資料等;也用于實作臨時表</code>

MRG_MYISAM

<code>是MyISAM的一個變種,能夠将多個MyISAM表合并為一個虛表</code>

<code>屬于傳統的存儲引擎,一般不常用</code>

NDB

<code>是MySQL Cluster中專用的存儲引擎,不常用</code>

第三方的存儲引擎

XtraDB

PBXT

TokuDB

列式存儲引擎:

Infobright

其它列式存儲引擎

開源社群存儲引擎:

Aria

Groona

OQGraph

SphinxSE

Spider

選擇存儲引擎可參考要素

是否需要事務

備份的類型的支援(熱備或冷備)

崩潰後的恢複

特有的特性(如對SSD的支援等)