1、mysql为了支持oltp(交易)系统而设计的一个引擎,目前是mysql的默认引擎
2、支持事务,这是oltp最基本的要求,事务支持ACID、原子性、一致性、持久性、隔离性
3、支持行锁,大大提升MySQL的并发性能,但是在资源消耗方面,但并未过多占用内存,只有发生事务锁冲突的时候才会占用内存
4、通过undo实现写不阻塞读,进一步提升并发性能;
5、支持事务的四种隔离级别,默认的隔离级别是可重复读,在业务允许的情况下,可以把可重复读改成已提交读
6、支持redo、保护内存数据;有了redo以后可以实现快速提交、脏缓冲区 | 脏写(写缓存)、崩溃恢复
7、change buffer,提升了对于dml因为二级索引导致的低下问题,二级索引要注意数量
8、 double write,解决了写入时数据损坏的问题,但是也放大了写入的压力,如果是从库,可以关闭double write
9、自适应hash索引,对系统的性能整体上提升不是很明显,因为通过索引访问数据最大的资源消耗是回表的成本,但是自适应 hash 是解决了树高部分的资源消耗,并且只支持=的访问,所以效果不是很明显。
10、异步IO,OS默认支持异步IO,数据库支持异步IO,总体上IO都实现了异步,大大提升了IO对cpu的消耗
11、刷新邻接页,加速脏页的回写,但是也放大了写压力
12、支持MVCC,MVCC通过undo技术来实现,在一个事务中,所有select访问到的是同一个时刻的数据(select一致性读),通过MVCC来实现事务对于select实现了可重复读,但是如果出现长事务、大事务,MVCC会导致undo暴涨。
13、支持外键,注意外键有陷阱,很多高并发系统里禁用外键。
14、通过gap锁,提供DML可重复读,避免幻影读。
15、支持大的共享内存和多核CPU,例如innodb buffer pool以及多线程,有利于降低物理读,提升SQL执行性能。