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

 

posted on 2020-01-29 17:08  HB1  阅读(728)  评论(0)    收藏  举报

导航