存储引擎是MySQL中的特有概念,可以通过语句SHOW ENGINES(常用) 或者SHOW VARIABLES LIKE ‘have%’ 查看其支持的引擎。针对不同的应用场景选择不同的引擎是非常有必要的。下面比较常用的MyISAM、InnoDB和MEMORY三种引擎。
特性 | MyISAM | InnoDB | MEMORY |
存储限制 | 有 | 64TB | 有 |
事务安全 | 不支持 | 支持 | 不支持 |
锁机制 | 表锁 | 行锁 | 表锁 |
B树索引 | 支持 | 支持 | 支持 |
哈希索引 | 不支持 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 | 不支持 |
集群索引 | 不支持 | 支持 | 支持 |
数据缓存 | 支持 | 支持 | |
索引缓存 | 支持 | 支持 | 支持 |
数据可压缩 | 支持 | 不支持 | 不支持 |
空间使用 | 低 | 高 | N/A |
内存使用 | 低 | 高 | 中等 |
批量插入的速度 | 高 | 低 | 高 |
支持外键 | 不支持 | 支持 | 不支持 |
InnoDB:由于支持事务的提交、回滚、崩溃恢复操作,占用空间更多。适合用于对事务的完整性要求比较高,频繁的进行插入和删除,需要实现并发的场景。
MEMORY:该引擎使用内存来存储数据,访问速度快,安全没保障,适合用于数据量小、快速访问的场景。