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、事務的特性有哪些;

簡單列舉下由本題引申的面試點,後面會統一總結。

Tags: