flush: 就是把内存里的数据写入磁盘的过程。
脏页:当内存数据页跟磁盘数据页内容不一致的时候。
干净页:内存数据写入到磁盘后,内存和磁盘上的数据页的内容一致的时候。
脏页和干净页都是在内存中。
innodb_io_capacity <75%进行参数设置,可以设置InnoDB刷脏页的控制策略。
根据上述算得的 F1(M) 和 F2(N) 两个值,取其中较大的值记为 R,之后引擎就可以按照 innodb_io_capacity 定义的能力乘以 R% 来控制刷脏页的速度。
脏页比例:Innodb_buffer_pool_pages_dirty/Innodb_buffer_pool_pages_total
mysql> select VARIABLE_VALUE into @a from global_status where VARIABLE_NAME = 'Innodb_buffer_pool_pages_dirty'; select VARIABLE_VALUE into @b from global_status where VARIABLE_NAME = 'Innodb_buffer_pool_pages_total'; select @a/@b;
InnoDB刷脏页速度策略:
测试磁盘随机读写的命令:fio -filename=$filename -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=500M -numjobs=10 -runtime=10 -group_reporting -name=mytest
redo log状态图:
更新和flush过程: