MySQL中支持的存储引擎有十几种,但是常用的存储引擎就那么几个,想要好的性能,首先就要选择合适的数据库引擎。
常见的数据库引擎有三种,我们来看看它们之间的对比:
MyISAM | Memory | InnoDB | |
用途 | 快读 | 内存数据 | 完整的事务支持 |
锁 | 全表锁定 | 全表锁定 | 多种隔离级别的行锁 |
持久性 | 基于表恢复 | 无磁盘I/O,无可持久性 | 基于日志(redo log)的恢复 |
支持索引类型 | B-tree,FullText,R-tree | hash,B-tree | B+tree hash(InnoDB哈希索引是引擎自适应的,无法人为干预),FullText(5.6+开始支持) |
事务特性 | 不支持 | 不支持 | 支持 |
存储引擎的选择大概业务判断:
(1)采用MyISAM
- 通常用来做记录的表,表现形式为 读多写少
- 并发不高,不需要事务
(2)采用InnoDB
- 涉及到事务
- 并发高,涉及数据量大
- 更新频繁
(3)采用Memory
- 足够的内存
- 对数据一致性要求不高,例如在线人数等
- 需要定期归档的数据