MyISAM
- MyIsAM是mysql5.5之前的默认引擎,它支持B-tree/FullText/R-tree
- 锁表级别为表锁,表锁优点开销小,加锁快;缺点是粒度大,发生锁冲动概率较高,容纳能力低,这种引擎适合查询为主的业务。
- 该引擎不支持事务,也不支持外键。
- 该引擎强调快速读取操作,他存储表的行数,于是
select count(*) from table 时只需直接读取已经存储的值就可以,不需要进行全表扫描。
InnoDB
- 支持事务,支持回滚,支持外键
- 支持索引类型为:Hash/B-tree
- 锁级别为:行锁;
优点:适合高并发级别的频繁表修改,高并发的性能优于MyisAM.
缺点:性能消耗较大,索引不仅缓存自身,还缓存数据,相比MyisAm需要更大的内存。- 不保存表的具体行数
select count(*) from table 需要扫描一遍表来计算有多少行。
ACDB事务
- A事务的原子性(Atomicity):指一个事务要么全部执行,要么不执行。不可能出现执行一半的情况。
- C事务的一致性(Consistency):指事务的运行并不改变数据库中数据的一致性。例如完整性约束了a+b=10,如果改变了a的值,那么b的值也会随之改变,因为两值的和是不变的。
- I事务的独立性(Isolation):事务的独立性也称为隔离性。是指两个以上的事务不会出现交错执行的状态,因为这样可能为导致数据不一致。
- D持久性(Durability):事务的持久性行,是指事务执行成功后便是持久的保存到数据库中了,不会无缘无故的回滚。
Memory
- 是内存级别的存储引擎,数据存储在内存中,所以能存储的数据量较小。
- 因为内存的特性,所以数据的一致性较差,
- 锁级别为表锁,不支持事务,但访问速度非常快
- 默认使用hash索引。