MySQL 主流儲存引擎介紹

2021-09-02 23:19:20 字數 1827 閱讀 8927

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

alter table mytbl engine = innodb;  

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

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

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

[sql]view plain

copy

create table newtbl like oldtbl;  

alter table newtbl engine=innodb;  

insert into newtbl select * from oldtbl;  

MySQL 主流儲存引擎介紹

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

MySQL 主流儲存引擎介紹

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

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

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