掘金 后端 ( ) • 2024-04-03 10:51

大家好,我是程序员阿江。

MySQL存储引擎(Storage Engine)可以说是MySQL数据库的核心,面试中也经常会被问到,所以,今天的这篇文章就简要地介绍下MySQL存储引擎。

什么是存储引擎

首先,先了解下MySQL的架构,大概可以分为下面这三层:

  • 连接层
  • 服务层
  • 存储引擎层

由此可见,存储引擎在整个MySQL架构中是十分重要的。

那么,什么是存储引擎呢?

一句话,MySQL存储引擎就是负责数据的存储和读取的

常见的存储引擎有InnoDB,MyISAM,Memery等,不同的存储引擎有不同的特性和各自的优缺点,MySQL允许我们为数据库表选择适合自己使用场景的存储引擎。

小提示: 在MySQL5.5版本之前默认的存储引擎是MyISAM,而在5.5及之后的版本,MySQL默认的存储引擎是InnoDB。

常见的操作

  • 查看当前数据库的支持的存储引擎
show engines;

  • 查看数据库默认的存储引擎
show variables like '%storage_engine%';

  • 查看某表使用的存储引擎
show create table table_name;

  • 修改数据库默认的存储引擎
    default-table-type=innodb行添加到my.cnf或my.ini文件的[mysqld]节里,然后重启MySQL。

  • 修改某表的存储引擎

alter table table_name engine=innodb;

小提示
我们只能修改非系统表的存储引擎,系统表(比如系统自带的数据库mysql里的user表)是不允许修改它默认的存储引擎的。

存储引擎对比选择

现在MySQL5.7和8.0都将InnoDB作为默认存储引擎,非必要情况下我们使用默认的InnoDB就好,不需要修改它。

重点关注InnoDB的三个特性:

  • 支持事务
  • 支持行级锁
  • 支持外键

好了,今天的分享就到这里。谢谢大家!