InnoDB-InnoDB线程
参考文献
- 千金良方: MySQL性能优化金字塔法则
InnoDB
后台线程
1 | mysql> select name,type,thread_id,processlist_id from performance_schema.threads; |
线程说明
线程名 | 中文名称 | 说明 |
---|---|---|
srv_master_thread |
主线程 | InnoDB存储引擎主线程,有4个循环正常,即主循环(loop ),后台循环backgroud loop ),刷新循环(flush loop ),暂停循环(suspend loop ).其中大多数工作在主循环中完成,主循环主要负责将脏页缓存页刷新到数据文件中,执行undo purge 操作,触发检查点,合并插入缓冲区,刷新redo log 到磁盘中等. |
io_ibuf_thread |
插入缓冲线程 | 主要负责插入缓冲区的合并操作.将对辅助索引页的修改操作从随机变成顺序I/O ,大幅度提升了效率(会先判断发生修改的辅助索引页是否在缓冲池中,如果在则直接修改;如果不在,则先存放在Change Buffer 对象中.当其他读取操作把该修改对应的页从磁盘读取到缓冲池中时,就会合并该Change Buffer 对象中保存的记录到辅助索引页中) |
io_read_thread |
读I/O 操作线程 |
负责数据库的AIO 读取操作,可以配置多个读线程,由参数innodb_read_io_threads 设置,默认值为4 |
io_write_thread |
写I/O 操作线程 |
负责数据的AIO 写操作,可配置多个写线程,由参数innodb_write_io_threads 设置,默认值为4. |
srv_purge_thread |
undo 清理线程 |
主要负责undo 页清理操作.在MySQL5.6之后可设置独立的线程执行undo purge 操作,以减少主线程负载. |
srv_lock_timeout_thread |
锁线程 | 负责锁控制和死锁检测等 |
srv_error_monitor_thread |
错误监控线程 | 主要负责错误控制和错误处理 |
main |
主线程 | MySQL服务的主线程(请与InnoDB存储引擎主线程区别开),包括初始化、读取配置文件等功能 |
srv_worker_thread |
InnoDB 工作线程 |
InnoDB 的实际工作线程,轮询从任务队列中取出任务(row select、row insert 等)并执行 |
buf_dump_thread |
InnoDB 缓冲池导入/导出线程 |
InnoDB 缓冲池热点数据页导入/导出的线程 |
signal_handler |
信号处理线程 | 负责SIGTERM、SIGQUIT、SIGHUP 信号处理线程 |
InnoDB
前台线程
1 | mysql> select name,thread_id,processlist_id from performance_schema.threads where type='FOREGROUND'; |
线程名 | 中文名称 | 说明 |
---|---|---|
compress_gtid_table |
GTID压缩线程 | 用于压缩MySQL5.7 新增的mysql.gtid_executed 表中的GTID 记录数量.在MySQL 5.7 版本中,当从库关闭log-bin 或者log_slave_updates 参数之后,SQL线程每应用一个事务就会实时更新一次mysql.gtid_executed 表(在MySQL 5.7 中启用GTID 复制时可以关闭log_slave_updates 参数, 使用该表来记录GTID .但在MySQL5.6 中由于没有此表,所以不能关闭log_slave_updates 参数),时间一长,该表中就会存在大量的GTID 记录(每个事务一行),使用该线程可以把多行记录压缩成一行 |
one_connection |
用户连接线程 | 用于处理用户请求的线程 |
replica_io |
I/O线程 | 用于拉取主库binlog 日志的线程 |
replica_sql |
SQL线程 | 用于应用从主库拉取的binlog 日志的线程.注意:在多线程复制中,该线程为协调器线程,用于分发binlog 日志给工作线程(slave_worker )应用,并对多个工作线程进行协调. |
replica_worker |
工作线程 | 在多线程复制场景中,接收并应用SQL线程(slave_sql )分发的主库binlog 日志,多个工作线程之间的一致性依靠SQL线程(slav_sql )进行协调. |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HoleLin's Blog!