1 InnoDB
InnoDB面向聯機事務處理(On-Line Tranaction Processing, OLTP),主要應用於傳統關係型數據庫,基本的日常事務處理.
InnoDB提供數據庫的事務支持(ACID),實現了SQL標準的四種隔離級別,並提供行級鎖和外鍵,設計目的是爲處理大容量數據庫系統,MySQL運行時InnoDB引擎在內存中建立緩衝池,用於緩衝數據和索引,但是該引擎不支持FULLTEXT(全文索引),並且不保存數據行數.
2 MyISAM
MyISAM面向聯機分析處理(On-Line Analytical Processing, OLAP),主要應用於數據倉庫系統,支持複雜的分析操作,側重決策支持.
MyISAM不提供事務支持,行級鎖和外鍵,鎖級別爲全表鎖,當插入和更新數據時,會鎖定全表,效率較低,但是資源消耗也相對小,支持全文索引.
MySQL5.1及之前的版本,MyISAM爲默認引擎,之後默認引擎爲InnoDB.
3 InnoDB和MyISAM比較
序號 | InnoDB | MyISAM | 備註 |
---|---|---|---|
1 | 事務 | 支持 | 不支持 |
2 | 外鍵 | 支持 | 不支持 |
3 | 索引 | 聚簇索引 | 非聚簇索引(輔助索引) |
4 | 數據行數 | 不保存具體行數 | 保存整體行數 |
5 | 鎖粒度 | 最小爲行級鎖 | 最小爲表級鎖 |
6 | 刪除表 | 按行刪除 | 先drop表,後重建表 |
7 | 壓縮性 | 難壓縮 | 可以被壓縮 |
8 | 跨平臺性 | / | 較方便 |
9 | 存儲形式 | 所有表都保存在同一個數據文件中,數據表的大小僅受限於操作系統文件大小,一般爲2GB | 文件存儲爲三份,分別爲表定義文件(.frm),數據文件(.MYD,MYData)和索引文件(*.MYI,MYIndex) |
4 引擎選擇
序號 | 場景 | InnoDB | MyISAM |
---|---|---|---|
1 | 支持事務 | √ | |
2 | 絕大多數只讀 | √ | |
3 | 讀寫頻繁 | √ | |
4 | 數據恢復容易 | √ | |
5 | 默認 | √ |
【參考文獻】
[1]https://www.jianshu.com/p/f6bb7088b3b0
[2]https://blog.csdn.net/john_lw/article/details/80306122
[3]https://www.cnblogs.com/jiawen010/p/11805241.html
[4]https://zhuanlan.zhihu.com/p/88275060
[5]https://www.zhihu.com/question/20596402?sort=created
[6]https://blog.csdn.net/qq_36906627/article/details/86634518
[7]https://www.cnblogs.com/yangk1996/p/12864004.html