InnoDB线程主要分为四种,分别是Master Thread、IO Thread、Purge Thread、Page Cleaner Thread。
2. Purge Thread作用: 主要是用做读写处理
我们可以通过命令show engine innodb status;来查看读写线程的相关状态,执行之后的数据页面如下:
read Thread: 负责读取操作,将数据从磁盘加载到内存中page页中(有4个)
write Thread: 负责写操作,将脏页刷新到磁盘(有4个)
log Thread: 负责将日志缓冲区内容刷新到磁盘(有1个)
insert buffer Thread: 负责将写缓冲区内容刷新到磁盘(有1个)
3. Page Cleaner Thread作用: 用于事务提交之后回收undo页
我们可以通过命令%innodb_purge_threads%;来查看该线程的数量,执行之后的页面如下:
我们可以看到,默认设置的purge thread的数量是4个,这样可以更快的回收undo页。
4. Master Thread作用: 将脏数据刷新到磁盘
我们可以通过命令%innodb_page_cleaners%;来查看该线程的数量,默认是1。
注意: page cleaner thread其实是会调用write thread线程来进行写操作
每一秒的操作:作用: InnoDB的主线程,负责调用其他的线程,优先级最高。
该线程会定时处理数据,每一秒会执行一些操作,每十秒也会执行一些操作,具体执行哪些操作呢?
1.刷新脏页数据到磁盘,根据脏页比例达到75%才操作。我们可以通过命令show variables like 'innodb_max_dirty_pages_pct;'来查看刷新脏页百分比配置,执行命令后的页面如下:
那么达到刷新比例要求,会刷新多少脏页数据到磁盘呢,我们可以通过show innodb_io_capacity;命令查看刷新容量大小:
默认是200
2.合并写缓冲区数据:如果一秒的IO次数小于5,认为IO的压力较小,可以执行合并缓冲区的操作(可能会做)。
每10秒的操作:3.刷新日志缓冲区:即使事务没有提交,InnoDB也会每秒将重做日志缓冲区的内容刷新到重做日志文件中。(一定会做)
1.刷新脏页数据到磁盘,刷新的脏页数量为innodb_io_capacity(可能会做)
2.合并写缓冲区的数据,合并写缓冲区的大小是innodb_io_capacity的5%(一定会做)
3.刷新日志缓冲区(一定会做)
4.删除无用的undo页(一定会做)



