java面试一日一题:mysql中常用的存储引擎有哪些?

时间:2021-12-16 08:41:10

问题:请讲下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、事务的特性有哪些;

简单列举下由本题引申的面试点,后面会统一总结。

java面试一日一题:mysql中常用的存储引擎有哪些?