说说mysql的后台刷新线程

mysql master thread

innodb存储引擎属于多线程的模型,后台有多种线程,负责处理不同的任务。

一,先来说说master thread线程,他是后台线程中的主线程,优先级别最高,其内部有4个循环:

1)主循环loop
2)后台循环background loop
3)刷新循环 flush loop
4)暂停循环suspend loop

根据数据的运行状态会在这四个循环之间进行切换,在loop主循环中又包含两种操作:
1)每1秒的操作
2)每10秒的操作

每1秒的操作:
日志缓冲算新到磁盘,即使这个事物还没有提交。
刷新脏页到磁盘。
执行合并插入到缓冲的操作。
产生checkpoint。
清楚无用的table cache。
如果当前没有用户活动,就可以切换到background loop。
每10秒的操作:
日志缓冲算新到磁盘,即使这个事物还没有提交。
执行哼插入缓冲的操作。
刷新赃页到磁盘。
删除无用的undo页。
产生checkpoint。

二,四大I/O线程,分别是read thread,write thread, redo log thread ,change buffer thread.
redo log thread 负责把日志缓冲中的内容刷新到redo log 文件中。
change buffer thread负责把插入缓冲中的内容刷新到磁盘,read/write thread是数据库的读写请求线程默认都是4个,如果使用高转速磁盘,可以适当调大该值,我司配置16。
innodb_purge_threads 16 |
innodb_read_io_threads 16

三,page cleaner thread是负责赃页刷新的线程,mysql5.7后可以增加多个,公司配置4.
innodb_page_cleaners 4

四,purge thread负责删除无用的undo页,由于进行DML语句的操作都会生成undo,系统需要定期对undo页
进行清理,这时就需要purge操作,从mysql5.6开始就把purge thread单独从master thread中分离出来,通过
innodb_purge_thread参数来控制purge的线程个数默认1个,最大32个,生产配置4.
innodb_purge_threads 4

五,checkpoint 线程的作用是在redo log发生切换时,执行checkpoint,redo log发生切换或者文件快写满时,会触发赃页刷新到磁盘,
还有就是可以确保redo log 刷新到磁盘,实现真正持久化,避免数据丢失。

六,error monitor thread shi 负责数据库报错的监控线程。

七,lock monitor thread是负责锁的监控线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值