MySQL存储引擎
MySQL存储引擎
- InnoDB存储引擎
- MyISAM存储引擎
- Archive存储引擎
Archive只支持insert和select操作,支持行级锁和专用的缓冲区,可以实现高并发的插入。
- CSV存储引擎
可以将普通的csv文件作为MySQL的表处理,但是不支持索引
- Memory引擎
支持Hash索引,因此查找操作非常快。Memory表是表级锁,并发写入性能低,不支持blob和text类型的列,且每行的长度是固定的。
应用场景:
- 用于查找(lookup)或映射(mapping)
- 用于查找周期性聚合数据
- 用于保存数据分析产生的中间数据
- Blackhole存储引擎
没有实现任何存储机制,会丢弃所有插入的数据, 不做任何保存,但是服务器会记录Blackhole表的日志, 用于复制数据到备库
- Merge引擎是有MyISAM引擎的变种, 由多个MyISAM表合并而来的虚拟表
- NDB集群引擎
- Federated引擎
Federated引擎是访问其他MySQL服务器的一个代理, 会常见一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,然后提取或者发送数据到需要的数据。
MyISAM和InnoDB存储引擎的区别
- 是否支持行级锁, MyISAM只支持表级锁, InnoDB支持行级锁和表级锁
- 是否支持事务和崩溃后安全恢复,MyISAM强调性能,每次查询都是原子性, 不支持事务。InnoDB支持事务、外键等高级数据库功能,具有事务,回滚和崩溃修复的事务性安全型表
- 是否支持外键,MyISAM不支持,而InnoDB支持。
- 是否支持MVCC,仅 InnoDB 支持。应对高并发事务, MVCC比单纯的加锁更高效;MVCC只在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下工作;MVCC可以使用 乐观(optimistic)锁 和 悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一