存储引擎在MySQL底层以组件的形式提供,不同的存储引擎提供的存储机制、索引的存放方式和锁粒度等均不相同。
存储引擎基于数据表, 而不是基于数据库, 请根据业务需求为数据表选择最优的存储引擎。
创建新表时, 如果不指定存储引擎, 则使用默认的存储引擎。
MySQL5.5
之前默认存储引擎为MyISAM
,MySQL5.5
之后默认存储引擎为InnoDB
。
show engines;
- 1
MySQL 常用引擎有 :
InnoDB
、MyISAM
、MEMORY
、ARCHIVE
、CSV
。
以下简单介绍一下, 其他的知识, 请移步 MySQL 官网。
InnoDB
是一种兼顾高可靠性和高性能的通用存储引擎。具有提交、回滚和崩溃恢复功能的事务以保护用户数据。
InnoDB 主要特性:
- 支持事务
- 行级锁机制, 支持更高的并发
- 外键约束
- 能够通过二进制日志恢复数据
MyISAM 主要特性:
- 不支持事务
- 表级锁
- 不支持外键约束
- 支持全文索引
- 访问速度快
Memory 使用 hash 索引, 将表数据存放于内存中, 受到不可控影响, 数据容易丢失, 所以主要用于 临时表或缓存。
MEMORY 主要特性:
- 不支持
TEXT
和BLOB
类型, 只支持固定长度的字符串类型。比如: 将varchar
自动转为char
。- 表级锁
- 通常作为临时表使用
Archive 只支持
select
与insert
语句。
ARCHIVE 主要特性:
支持数据压缩, 在存储数据前会对数据压缩处理
只支持在整数自增类型的字段上添加索引
CSV 主要存储的是
.csv
格式的文本数据, 可以直接打开存储的文件进行编辑。
CSV 主要特性:
- 可将数据表中的数据直接导出为
.csv
文件, 也可将.csv
文件导入数据表中。