MySQL存儲引擎簡介-MyISAM和InnoDB的區別

  • 2019 年 11 月 4 日
  • 筆記

上篇文章《MySql邏輯結構簡介》我們聊到了存儲引擎,可以說MySQL可插拔的多元化存儲引擎給我們的使用者帶來了很靈活的選擇。

這篇文章我們來聊一下目前主流的兩種存儲引擎MyISAM和InnoDB的區別。

  MyISAM InnoDB
外鍵 不支持 支持
事務 不支持 支持
鎖表 表鎖,即使操作一條記錄也會鎖住整個表,不適合高並發的操作 行鎖,操作時只鎖某一行,不對其它行有影響,適合高並發的操作

緩存

只緩存索引,不緩存真實數據

不僅緩存索引還要緩存真實數據,對內存要求較高,而且內存大小對性能有決定性的影響

佔用空間  

表空間佔用

表空間佔用

關注點

性能,查詢速度快

事務

 

阿里巴巴,淘寶用哪個?
前期:阿里巴巴大部分MySQL數據庫其實使用的是Percona的Xtradb原型加以修改。

Percona公司為MySQL數據庫服務器進行了改進,新建了一款存儲引擎叫Xtradb,這款存儲引擎從性能上完全可以替代Innodb,在功能和性能上較MySQL有着很顯著的提升,

該版本提升了在高負載情況下的InnoDB的性能,為DBA提供一些非常有用的性能診斷工具;另外有更多的參數和命令來控制服務器行為。

現在:2016年雲棲大會·北京峰會上,阿里雲宣布啟動了 AliSQL、AliRedis 開源項目,AliSQL是基於MySQL官方版本的一個分支,由阿里雲數據庫團隊維護,目前也應用於阿里巴巴集團業務以及阿里雲數據庫服務。

AliSQL的出現不僅從其他開源分支比如:Percona,MariaDB,WebScaleSQL等社區汲取精華,也沉澱了阿里巴巴多年在MySQL領域的經驗和解決方案。該版本在社區版的基礎上做了大量的性能與功能的優化改進,尤其適合電商、雲計算以及金融等行業環境,針對電商秒殺場景,AliSQL有着特殊的優化,“在通用基準測試場景下,AliSQL版本比MySQL官方版本有着 70% 的性能提升,在秒殺場景下,性能提升 100倍”,可幫助中小企業和開發者提升數據運營能力。

 

總結:

通常在企業中,我們會使用InnoDB存儲引擎,因為它支持事務,支持行鎖,高並發處理性能更好,CPU及內存緩存頁優化使得資源利用率更高。

對於那種只需要較高的查詢速度,沒有什麼其它特殊要求的,可以選擇MyISAM存儲引擎。

但是需注意:

MyISAM存儲引擎 B-tree索引有一個很大的限制:參與一個索引的所有字段的長度之和不能超過1000位元組。另外MyISAM數據和索引是分開,而InnoDB的數據存儲是按聚簇(cluster)索引有序排列的,主鍵是默認的聚簇(cluster)索引,因此MyISAM雖然在一般情況下,查詢性能比InnoDB高,但InnoDB的以主鍵為條件的查詢性能是非常高的。