java面試一日一題:mysql中常用的存儲引擎有哪些?
- 2021 年 4 月 19 日
- 筆記
問題:請講下mysql中常用的引擎有哪些?
分析:該問題主要考察對mysql存儲引擎的理解,及區別是什麼?
回答要點:
主要從以下幾點去考慮,
1、mysql的存儲引擎的基本概念?
2、mysql中常用的存儲引擎有哪些及各自的區別是什麼?
從上篇《java面試一日一題:請講下對mysql的理解》已經知道了mysql從整體架構上分為兩部分,一部分是server層,另外一部分是存儲引擎層。說的簡單點存儲引擎就是用來實際管理mysql中的數據,為了適用於不同的場景有了不同的存儲引擎。比較常用的存儲引擎有myIsam和Innodb兩種。
myIsam
myIsam不支援事務;
myIsam不支援外鍵;
myIsam的索引是非聚集索引,索引和數據是分開的;
myIsam使用一個變數保存了表中的數據總行數
myIsam支援表鎖;
myIsam支援全文索引;
Innodb
innodb支援事務,事務的實現依靠redo log、undo log、鎖、MVCC等技術;
inndo是聚集索引,主鍵索引和數據是在一起的;
innod沒有保存數據的總行數;
innodb支援表、行鎖,默認是行鎖;
innodb不支援全文索引,在5.7以後的版本才支援全文索引;
本文簡單的從一個面試過程中常見的面試題入手,講解了mysql的myIsam和Innodb兩種存儲引擎的區別。其實從上面的回答中面試官可以引申出很多問題,例如,
1、什麼是聚集、非聚集索引;
2、mysql的索引數據結構是什麼樣子的,為什麼使用B+樹;
3、什麼是redo log、undo log
4、什麼是MVCC;
5、事務的特性有哪些;
簡單列舉下由本題引申的面試點,後面會統一總結。

