MySQL系列:引擎

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章