mysql master thread_mysql master_thread

mysql master thread 工作内容

伪代码:

void master_thread(){

goto loop;

loop://主循环begin

for(int i=0;i<10;i++){

thread_sleep(1); //休眠1秒

do log_buffer flush to disk; //将日志缓冲刷新到磁盘文件

if (last_one_second_io < 5%*innodb_io_capacity)//如果前一秒的io操作次数小于(5%的磁盘io吞吐量参数innodb_io_capacity),合并(5%的磁盘io吞吐量参数)个插入缓冲inser_buffer

do merge 5%*innodb_io_capacity insert_buffer;

if (buf_get_modified_ratio_pct > innodb_max_dirty_pages_pct)//如果当前缓冲区的脏页比例超过配置文件innodb_max_dirty_pages_pct参数值,将innodb_io_capacity个脏页刷新到磁盘文件

do buffer_pool (100%*innodb_io_capacity) dirty_page flush to disk;

else enable adaptive flush

do buffer pool flush desired amount dirty page //???

if (no user activity)

goto background loop;

}

if (last_ten_second_io < innodb_io_capacity) //前10秒的io操作次数小于innodb_io_capacity(就是前面for循环)

do buffer_pool 100%*innodb_io_capacity dirty_page flush to disk; //将innodb_io_capacity个脏页刷新到磁盘文件

do merge at most 5%*innodb_io_capacity insert_buffer; //合并最多5%*innodb_io_capacity个插入缓冲inser_buffer

do log_buffer flush to disk; //将日志缓冲刷新到磁盘文件

do full purge; //删除无用undo页

if (buf_get_modified_ratio_pct > 70%) //如果当前缓冲内存的脏页比例超过70%

do buffer_pool 100%*innodb_io_capacity dirty_page flush to disk; //将innodb_io_capacity个脏页刷新到磁盘文件

else

do buffer_pool 10%*innodb_io_capacity dirty_page flush to disk; //将10%*innodb_io_capacity个脏页刷新到磁盘文件

do fuzzy checkpoint;

goto loop; //主循环end

background loop: //后台循环begin

do full purge; //删除无用undo页

do merge 100%*innodb_io_capacity insert_buffer; //合并innodb_io_capacity个插入缓冲inser_buffer

if (not idle) //如果不是空置的,跳回主循环

goto loop;

else

goto flush loop;//后台循环end 跳到刷新循环

flush loop://刷新循环begin

do buffer_pool 100%*innodb_io_capacity dirty_page flush to disk; //将innodb_io_capacity个脏页刷新到磁盘文件

if (buf_get_modified_ratio_pct > innodb_max_dirty_pages_pct) {

goto flush loop;//跳到刷新循环

}

goto suspend loop; //刷新循环end 跳到暂停循环

suspend loop://暂停循环begin

suspend_thread();//开启挂起线程

waiting event; //等待事件触发

goto loop;//暂停循环end 跳到主循环

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值