Thresh
Master Thread
Master thread 是 InnoDB 的主线程,负责调度其余各线程,优先级最高。
作用是将缓冲池中的数据异步刷新到磁盘,保证数据的一致性。蕴含:脏页的刷新(page cleaner thread)、undo 页回收(purge thread)、redo 日志刷新(log thread)、合并写缓冲等。
外部有两个主解决,别离是每隔 1 秒和 10 秒解决。
每 1 秒的操作:刷新日志缓冲区,刷到磁盘
合并写缓冲区数据,依据 IO 读写压力来决定是否操作
刷新脏页数据到磁盘,依据脏页比例达到 75% 才操作(innodb_max_dirty_pages_pct,innodb_io_capacity)每 10 秒的操作:刷新脏页数据到磁盘
合并写缓冲区数据
刷新日志缓冲区
删除无用的 undo 页
IO Thread
在 InnoDB 中应用了大量的 AIO(Async IO)来做读写解决,这样能够极大进步数据库的能。
在 InnoDB1.0 版本之前共有 4 个 IO Thread,别离是 write,read,insert buffer 和 log thread,起初版本将 read thread 和 write thread 别离增大到了 4 个,一共有 10 个了。
read thread:负责读取操作,将数据从磁盘加载到缓存 page 页。write thread:负责写操作,将缓存脏页刷新到磁盘。log thread:负责将日志缓冲区内容刷新到磁盘。insert buffer thread:负责将写缓冲内容刷新到磁盘。
Purge Thread
事务提交之后,其应用的 undo 日志将不再须要,因而须要 Purge Thread 回收曾经调配的 undo 页。
show variables like '%innodb_purge_threads%';
Page Cleaner Thread
作用是将脏数据刷新到磁盘,脏数据刷盘后相应的 redo log 也就能够笼罩,即能够同步数据,又能达到 redo log 循环应用的目标。会调用 write thread 线程解决。
show variables like '%innodb_page_cleaners%';