問題:請講下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、事務的特性有哪些;
簡單列舉下由本題引申的面試點,后面會統一總結。