一、存储引擎
简介:存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的而不是基于库的,所以存储引擎也可以被称为表类型。
二 、InnoDB
InnoDB是一种兼顾可靠性和高性能的通用存储引擎,在5.5之后是默认的MySQL存储引擎
特点:
- DML操作遵循ACID模型,支持事务
- 行级锁,提高并发访问性能
- 支持外键约束,保证数据的完整性和正确性
文件:
- xxx.ibd :xxx代表表名,innoDB引擎的每张表都会对应这样一个表空间文件
- 存储该表的表结构(sdi)、数据和索引
- 参数:innodb_file_per_table(查看是否开启的命令:show variables like 'innodb_file_per_table')
- ibd2sdi account.ibd命令查看文件(二进制)
三、MyISM
MySQL早期的默认存储引擎。
特点:
- 不支持事务,不支持外键
- 支持表锁,不支持行锁
- 访问速度快
文件:
- xxx.sdi:存储表结构信息
- xxx.MYD:存储数据
- xxx.MYI:存储索引
四、Memory
Memory引擎的表数据是存储在内存中的,由于收到硬件影响、或 断电的问题,只能将这些表作为临时表或缓存使用。
特点:
- 内存存放
- hash索引(默认)
文件:
- xxx.sdi:存储表结构信息
五、区别
六、存储引擎选择
没有好坏之分,根据场景选择一个或多个存储引擎组合使用
大多数情况只会使用InnoDB,另外两个一般被 MongoDB和Redis取代