1.存储引擎的作用
决定数据的底层存储结构
eg: 这个数据是存储在内存中还是磁盘中、生成几个文件、每个文件里面存放什么东西
-- 查看底层数据在磁盘中存储的路径:
show variables like "datadir";
-- 结果:datadir D:\softwarePackages\mysql-5.6.50-winx64\data\
2.存储引擎的变化
mysql引擎的变化:ISAM -> MyISAM -> InnoDb
3.相关命令
3.1.查看当前版本mysql支持的存储引擎
show engines
tip: Transactions表示是否支持事务,从上面的结果来看,只有InnoDb支持
3.2.查看表的存储引擎
-- 查看mysql数据库中,所有表的信息
show table status from mysql
4.常见存储引擎介绍
mysql里面有很多存储引擎,主要的有innoDb、MyISAM、memory、csv、archive这几个,他们是可以替换的,所以也叫做插件式的存储引擎
4.1.innoDb
tip: 这是mysql5.5版本之后,默认使用的存储引擎
底层存储文件:
2个文件:1个frm文件,存储表结构定义信息;1个ibd文件,存放表索引和数据
-
查看有哪些表是innoDb的:
-
查看这些表的底层存储情况:
优点:
- 支持事务
- 支持行锁
适用场景:
- 写多的场景;
- 需要事务的场景;
4.2.myISAM
底层存储文件:
3个文件:1个frm文件存表结构定义、1个myi文件存索引、1个myd文件存数据
-
查看有哪些表是myISAM的:
-
查看这些表的底层存储情况:
优点:
- 插入、查询快
- count统计快,因为记录了表的总记录数
缺点:
- 因为只支持表锁,所以,插入、更新会锁表
适用场景:
- 只读的场景;
- 需要快速插入大量数据的场景,可以先建个myIsam的表插入数据,再转换成innoDb的表
4.3.memory
底层存储文件:1个frm文件存表结构定义
优点:
- 读写速度快,因为是访问内存;
缺点:
- 重启,或者数据库崩溃,数据就会丢失;
适用场景:
- 充当中间表
4.4.csv
底层存储文件:
3个文件:1个frm文件存表结构定义,1个csv文件,1个csm文件
-
查看有哪些表是csv的:
-
查看这些表的底层存储情况:
优点
- 底层存储的数据是csv格式,可以直接打开看到数据
- 不同数据库之间,迁移数据很方便,只要2个库都有那个表结构,把文件挪过去覆盖后,执行1个重新加载的命令就能刷新数据
-- 重新加载表的命令:
flush tables
缺点
- 不支持索引
- 不允许空行
适用场景
- db间迁移数据
4.5.archive
底层存储文件:
2个文件:1个frm文件存表结构定义,1个arz文件
创建1个archive的表,可以看到它的底层存储文件:
优点
- 插入快速
- 存储在压缩文件中,所占的空间小
缺点
- 不支持索引
- 不支持更新、删除操作
适用场景
- 存储归档信息