1. 程式人生 > >MySQL:Innodb page clean 執行緒 (一): 基礎篇

MySQL:Innodb page clean 執行緒 (一): 基礎篇

本文使用原始碼版本:Percona 5.7.14本文約定 -協調工作執行緒:因為page clean執行緒的協調執行緒也會完成部分重新整理工作,所以叫做協調工作執行緒。

一、page clean執行緒概念

Innodb中page clean執行緒將髒資料寫入到磁碟,髒資料寫盤後相應的redo就可以覆蓋,然後達到redo迴圈使用的目的。在5.7中引數可以開啟多個page clean執行緒服務於多個innodb buffer例項如下:

The innodb_page_cleaners default value was

changed from 1 to 4 in MySQL 5.7. If the number of page cleaner threads exceeds the number

of buffer pool instances, innodb_page_cleaners is automatically set to the same value as

innodb_buffer_pool_instances.

實際上在內部實現中如果page clean執行緒為4個那麼包含一個協調工作執行緒和三個工作執行緒,這個協調工作執行緒也要完成一部分工作。在MySQL中我們可以通過語句檢視到這些工作執行緒:

| 17 | 57982 | innodb/page_cleaner_thread | NULL | BACKGROUND | NULL | NULL |

| 18 | 57983 | innodb/page_cleaner_thread | NULL | BACKGROUND | NULL | NULL |

| 20 | 57985 | innodb/page_cleaner_thread | NULL | BACKGROUND | NULL | NULL |

| 19 | 57984 | innodb/page_cleaner_thread | NULL | BACKGROUND | NULL | NULL |

實際上在我淺析分析中發現,所有的工作執行緒都是不斷輪詢每一個和buffer instance對應的槽(slot),直到所有的buffer instance都已經進行了刷髒工作為止,並沒有固定那個工作執行緒服務於那個buffer instance例項。

原文連結