异步IO & 刷新邻接页
异步IO
一条SQL可能需要扫描多个索引页,也就是进行多次IO操作。异步IO可以
同时进行发起多个IO,之后等待这些IO完成。
异步IO还有一个优势是可以进行IO Merge操作,将多个IO合并为一个IO,
这样可以提高IOPS的性能。(前提是查询的页正好是连续的)
IOPS:input/output operations per second
刷新邻接页
InnoDB存储引擎还提供了Flush Neighbor Page(刷新邻接页)的特性。其工作原理为:
当刷新一个脏页时,InnoDB存储引擎会检测该页所在区(extent)的所有页,如果是脏页,
那么一起进行刷新。
这样的好处是可以通过AIO将多个IO写入操作合并为一个IO操作,该工作机制在传统
机械磁盘下有着显著的优势。但需要考虑下面两个问题
- 是不是可能将不怎么脏的页进行写入,而该页之后又很快变脏
- 固态硬盘有较高的
IOPS,是否还需要这个特性
InnoDB存储引擎从1.2.x版本开始提供了参数innodb_flush_neighbors,用于控制是否
开启该特性。对于固态硬盘建议关闭。