介绍
- 可插拔的插件方式
- 存储引擎是指定在表之上的,每个表可以指定专用的存储引擎
- 不管采用什么存储引擎,都会在数据区产生对应的一个frm文件(表结构定义描述文件)
CSV 存储引擎
特点:
- 不能定义没有索引、列定义必须非空,不能设置自增列(不适用大表或数据的在线处理)
- csv数据的存储用
,隔开,可以直接编辑csv文件进行数据的编排(数据安全性低)
注:编辑之后,要生效使用 flush table xxx 命令
应用场景:
- 数据的快速导出导入
- 表格直接转换成csv
Archive 存储引擎
特点:
- 只支持insert和select操作
- 只允许自增ID建立索引
- 行级锁
- 不支持事务
- 数据占用磁盘少
应用场景:
- 日志系统
- 大量的设备数据采集
Memory 存储引擎
数据都是存储在内存中,IO效率高,服务重启数据丢失,内存数据表默认只有16M。
特点:
- 支持hash索引,B tree 索引,默认hash(查找复杂度O(1))
- 字段长度都是固定长度 varchar(32) = char (32)
- 不支持大数据存储类型,如blog、text
- 表级锁
应用场景:
- 等值查找热度较高的数据
- 查询结果内存中的计算,作为临时表存储需要计算的数据
Myisam 存储引擎
mysql 5.5 之前默认的存储引擎,较多的系统表也还是用这个引擎,系统临时表也会用到该引擎。
特点:
select count(*) from table 无需进行数据的扫描
数据(MYD)和索引(MYI)分开存储
表级锁
不支持事务
索引与数据分开存储,不管以什么字段建立索引,都会存储数据的一个地址的指针,根据该指针找到数据。
Innodb 存储引擎
mysql 5.5 之后默认的存储引擎。
特点:
- 支持事务
- 行级锁
- 聚集索引(主键索引)的方式进行数据存储
- 支持外键
以主键为索引来组织数据的存储,在叶子节点存储了该条数据的所有数据,如果其他字段做索引,会在该字段索引的叶子节点存储主键索引的值,再根据该值在主键索引种找到数据。如果没有明确指定主键索引,会自动生成 6 byte的 int 主键索引。