MySQL儲存引擎簡介-MyISAM和InnoDB的區別
上篇文章《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的以主鍵為條件的查詢效能是非常高