描述一下innodb

1mysql为了支持oltp(交易)系统而设计的一个引擎,目前是mysql的默认引擎

2、支持事务,这是oltp最基本的要求,事务支持ACID、原子性、一致性、持久性、隔离性

3、支持行锁,大大提升MySQL的并发性能,但是在资源消耗方面,但并未过多占用内存,只有发生事务锁冲突的时候才会占用内存

4、通过undo实现写不阻塞读,进一步提升并发性能

5、支持事务的四种隔离级别,默认的隔离级别是可重复读,在业务允许的情况下,可以把可重复读改成已提交读

6、支持redo保护内存数据;有了redo以后可以实现快速提交、脏缓冲区 | 脏写(写缓存)、崩溃恢复

7change buffer,提升了对于dml因为二级索引导致的低下问题,二级索引要注意数量

8 double write,解决了写入时数据损坏的问题,但是也放大了写入的压力,如果是从库,可以关闭double write

9、自适应hash索引,对系统的性能整体上提升不是很明显,因为通过索引访问数据最大的资源消耗是回表的成本,但是自适应 hash 是解决了树高部分的资源消耗,并且只支持=的访问,所以效果不是很明显。

10、异步IO,OS默认支持异步IO,数据库支持异步IO,总体上IO都实现了异步,大大提升了IOcpu的消耗

11、刷新邻接页,加速脏页的回写,但是也放大了写压力

扫描二维码关注公众号,回复: 6886392 查看本文章

12、支持MVCCMVCC通过undo技术来实现,在一个事务中,所有select访问到的是同一个时刻的数据(select一致性读)通过MVCC来实现事务对于select实现了可重复读,但是如果出现长事务、大事务,MVCC会导致undo暴涨。

13、支持外键,注意外键有陷阱,很多高并发系统里禁用外键。

14、通过gap锁,提供DML可重复读,避免幻影读。

15、支持大的共享内存和多核CPU,例如innodb buffer pool以及多线程,有利于降低物理读,提升SQL执行性能。

猜你喜欢

转载自www.cnblogs.com/5945yang/p/11259145.html