大家好,我是程序员阿江。
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的三个特性:
- 支持事务
- 支持行级锁
- 支持外键
好了,今天的分享就到这里。谢谢大家!