参考文章:
- 《MySQL技术内幕:InnoDB存储引擎》
异步IO
为了提高磁盘操作性能,InnoDB存储引擎采用异步IO(AIO)的方式来处理磁盘操作,一条查询的SQL语句可能需要扫描多个索引页,也就是需要进行多次IO操作,可以一次发送多个IO操作等待结果进行合并,这就是AIO。同时还可以将判断数据页如果是连续的,会将多个IO合并成一个IO,这样就可以提高IOPS的性能。
# 可以通过配置来开启和关闭 aio show variables like "innodb_use_native_aio%"
刷新邻接页
刷新邻接页的工作原理:当刷新一个脏页时,InnoDB存储引擎会检测该页所在区(extent)的所有页,如果是脏页,那么一起进行刷新。
优点:
- 通过AIO可以将多个IO写入操作合并成一个IO操作,所以该工作机制在传统机械磁盘下有着显著的优势。
缺点:
- 可能会造成不怎么脏的页进行写入,而该页之后会很快变成脏页
- 固态硬盘有着较高的IOPS,所以建议将该参数设置为innodb_flush_neighbors=0(关闭此特性)