异步IO & 刷新邻接页

异步IO

一条SQL可能需要扫描多个索引页,也就是进行多次IO操作。异步IO可以

同时进行发起多个IO,之后等待这些IO完成。

异步IO还有一个优势是可以进行IO Merge操作,将多个IO合并为一个IO

这样可以提高IOPS的性能。(前提是查询的页正好是连续的)

IOPSinput/output operations per second

刷新邻接页

InnoDB存储引擎还提供了Flush Neighbor Page(刷新邻接页)的特性。其工作原理为:

当刷新一个脏页时,InnoDB存储引擎会检测该页所在区(extent)的所有页,如果是脏页,

那么一起进行刷新。

这样的好处是可以通过AIO将多个IO写入操作合并为一个IO操作,该工作机制在传统

机械磁盘下有着显著的优势。但需要考虑下面两个问题

  • 是不是可能将不怎么脏的页进行写入,而该页之后又很快变脏
  • 固态硬盘有较高的IOPS,是否还需要这个特性

InnoDB存储引擎从1.2.x版本开始提供了参数innodb_flush_neighbors,用于控制是否

开启该特性。对于固态硬盘建议关闭。