MySQL技术内幕InnoDB存储引擎 - 线程工作内容
通过 SHOW ENGINE INNODB STATUS 我们可以看到如下一段内容:
srv_master_thread loops: 37369 srv_active, 0 srv_shutdown, 2019561 srv_idle srv_master_thread log flush and writes: 0
srv_active、srv_idle是Master Thread的两个工作状态,
Master Thread的伪代码如下:

srv_master_do_active_tasks的工作内容(以前是每秒一次):


另外InnoDB有一个脏页自适应刷新的参数 innodb_adaptive_flushing。
SHOW VARIABLES LIKE 'innodb_adaptive_flushing' innodb_adaptive_flushing ON
它的作用是:

上面的100个脏页是很老版本的Mysql,后面版本这个数量是由 innodb_io_capacity 控制的:
SHOW VARIABLES LIKE 'innodb_io_capacity' innodb_io_capacity 200

上图仅做参考,要根据业务实际情况调整 innodb_io_capacity。

srv_master_do_idle_tasks的工作内容(以前是每10秒一次):


每次full purge 回收的undo页数量由 innodb_purge_batch_size 设置:
SHOW VARIABLES LIKE 'innodb_purge_batch_size' innodb_purge_batch_size 300
浙公网安备 33010602011771号