MySQL 主流儲存引擎介紹

2021-09-02 12:21:13 字數 2130 閱讀 2441

看你的mysql現在已提供什麼儲存引擎:

mysql> show engines;

看你的mysql當前預設的儲存引擎:

mysql> show variables like '%storage_engine%';

你要看某個錶用了什麼引擎(在顯示結果裡引數engine後面的就表示該錶當前用的儲存引擎):

mysql> show create table 表名;

我們知道mysql最大的特色是其可插拔的外掛程式式儲存引擎,本文將介紹目前市面上主流的儲存引擎。這裡要特別提一點:由於mysql是開源的,所以如果你對某些儲存引擎不滿意,可以修改或寫乙個儲存引擎,增加自己想要的特性(據我所知,國內比較知名的有網易的tnt引擎),這也是mysql作為開源資料庫的魅力之一。

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

innodb是mysql使用率最高的儲存引擎,目前市面上至少95%的mysql採用該儲存引擎,因此從mysql5.5開始,它替代myisam成為預設的儲存引擎。它有如下幾個特點:

1)支援事務:採用mvcc(多版本併發控制)來支援高併發,實現了四個ansi標準的隔離級別,預設為repeatable read,並且通過間隙鎖(next-key lock)防止幻讀。

2)innodb的表是基於聚簇索引,對主鍵查詢有很高的效能,但它的二級索引必須包含主鍵列。

3)支援熱備份:oracle提供的mysql enterprise backup和percona提供的開源的xtrabackup都可以實現熱備

4)支援行級鎖

1)不支援行級鎖,也就是說任何操作都對整張表加鎖。

2)不支援事務,無法回滾,崩潰後無法安全恢復。

3)支援全文索引、壓縮、空間函式等

myisam設計簡單,資料以緊密格式儲存,在某些場景下效能很好,但 它最典型的問題還是表鎖。

是乙個針對高速插入和壓縮做了優化的簡單引擎,只支援insert和select操作,每次select都是全表掃瞄,適合日誌和資料採集應用。

可以將普通的csv檔案作為mysql的表處理,可以將excel的資料儲存為csv格式檔案,然後複製到mysql的資料目錄下,就能在mysql中以表的方式開啟,因此csv引擎作為一種資料交換機制,非常有用。

所有的資料都保持在記憶體中,重啟後資料會丟失。memory表是表級鎖,因此寫效能較低,但它的查詢效能非常高,支援hash索引。

mysql伺服器、ndb集群儲存引擎,以及分布式的、share-nothing的、容災的、高可用的ndb資料庫組合成為mysql集群。

以上介紹的都是mysql內建的儲存引擎,以下是第三方的儲存引擎。

是percona公司基於innodb的乙個改進版本

一種大資料的儲存引擎。

為固態儲存ssd設計。

面向列的儲存引擎,為資料分析和資料倉儲設計。

準則1:除非需要用到innodb沒有的特性,否則都應該優先選擇innodb引擎。

準則2:不要混合使用多種儲存引擎。

有三種方法可以改變表的儲存引擎,最常見的一種是:

[sql]view plain

copy

print?

alter

table

mytblengine=innodb;

但這種方法有乙個問題:需要執行很長時間,因為mysql將按行把資料從原表複製到新錶。

第2種方法是利用mysqldump工具將資料匯出到檔案,然後修改匯出的文字檔案中的create table語句的儲存引擎選項。

最後一種方法是建立乙個新的儲存引擎的表,然後利用insert...select語句來導資料:

[sql]view plain

copy

print?

create

table

newtbl

like

oldtbl;

alter

table

newtblengine=innodb;

insert

into

newtbl

select

*from

oldtbl;

MySQL 主流儲存引擎介紹

看你的mysql現在已提供什麼儲存引擎 mysql show engines 看你的mysql當前預設的儲存引擎 mysql show variables like storage engine 你要看某個錶用了什麼引擎 在顯示結果裡引數engine後面的就表示該錶當前用的儲存引擎 mysql sh...

MySQL 主流儲存引擎介紹

mysql show create table 表名 我們知道mysql最大的特色是其可插拔的外掛程式式儲存引擎,本文將介紹目前市面上主流的儲存引擎。這裡要特別提一點 由於mysql是開源的,所以如果你對某些儲存引擎不滿意,可以修改或寫乙個儲存引擎,增加自己想要的特性 據我所知,國內比較知名的有網易...

mysql儲存引擎介紹 MySQL儲存引擎簡單介紹

mysql使用的是外掛程式式儲存引擎。主要包含儲存引擎有 myisam。innodb,ndb cluster,maria。falcon,memory,archive,merge。federated。當中最為廣泛的是myisam 和innodb兩種儲存引擎,所以接下來對它們做簡介。myisam 儲存引...