MyISAM
1)不支持事务
2)表锁
3)不支持外键
4)主键不必须
5)支持全文索引
6)可压缩存储,省存储空间。
更新性能不佳,一个更新操作就会阻塞其它操作,适合于不用事务的查询类应用。
5.0后默认存储引擎。
InnoDB
1)支持事务
2)行锁
3)支持外键
4)主键是必须的
5)5.6版本开始支持全文索引
6)需要更多的内存和存储空间
查询速度不如myisam,更新性能比myisam强,但系统开销较大。
如果需要支持事务,或表数据需要频繁进行更新和删除操作,那么选择InnoDB存储引擎比较适合。
5.5后默认存储引擎。
对比
存储引擎 | 锁机制 | 事务 | 热备 | 外键 | 缓冲 | 索引 |
InnoDB | 行锁 | 支持 | 支持 | 支持 | 数据 | 聚集 |
MyISAM | 表锁 | 不支持 | 不支持 | 不支持 | 索引 | 非聚集 |
Merge
将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用,这些MyISAM表结构必须完全相同。
- CREATE TABLE `t1` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `log` varchar(45) ,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM;
- CREATE TABLE `t2`(
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `log` varchar(45) ,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM;
- CREATE TABLE `t` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `log` varchar(45) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=MERGE UNION=(t1, t2) INSERT_METHOD=LAST;
Memory
该存储引擎的所有数据都存储在内存中,处理速度很快但安全性不高。适用于数据即使突然丢失不会对业务产生太大影响的场景。
Active
写入速度快,查询效率低,适合于日志和数据采集类应用。