mysql後臺線程詳解

1.mysql後臺線程mysql

mysql後臺線程主要用於維持服務器的正常運行和完成用戶提交的任務,主要包括:master thread,read thread,write thread,redo log thread,change buffer thread,page cleaner thread,purge thread,checkpoint,error monitor thread,lock monitor thread等.sql

2.mysql後臺線程詳解
1)master thread
Master thread優先級最高, 其內部包含幾個循環:主循環(loop),後臺循環(background loop),刷新循環(flush loop),暫停循環(suspend loop).master thread會根據其內部運行的相關狀態在前述各循環間中進行切換.
大部分操做在主循環(loop)中完成,其包含有1s和10s兩種操做.
1s操做主要包括:日誌緩衝刷新到磁盤(老是,即便事務尚未提交);最多刷100個新髒頁到磁盤(可能);執行和並改變緩衝的操做(可能);若當前沒有用戶活動,可能切換到background loop等.
10s操做主要包括:刷新100個髒頁到磁盤(可能);合併至多5個改變緩衝(老是);日誌緩衝刷新到磁盤(老是);刪除無用的undo頁(老是);刷新100個或者10個髒頁到磁盤(老是)產生一個檢查點(老是)等.服務器

2)read thread
read thread爲mysql的讀線程,默認爲4個,其負責將數據頁從磁盤上讀入,其由innodb_read_io_threads選項控制.用戶線程發起讀請求並將其放至讀請求隊列,read threads從讀請求隊列獲取讀任務並完成.oop

3)write thread
write thread爲mysql的寫線程,默認爲4個,其負責將數據頁從緩衝區寫出到磁盤,其由innodb_write_io_threads控制選項控制.page_cleaner線程發起寫請求並將其放至寫請求隊列,write threads從寫請求隊列獲取寫任務並完成.線程

4)redo log thread
redo log thread負責把日誌緩衝中的內容刷新到redo log文件中.日誌

5)change buffer thread
change buffer thread負責把改變緩衝(change buffer)中的內容刷新到磁盤.索引

6)page cleaner thread
page cleaner thread是負責髒頁刷新的線程,從MySQL5.7起可增長多個.隊列

7)purge thread
purge thread負責刪除無用的undo頁.因爲進行DML語句的操做都會生成undo,系統須要按期對undo頁進行清理,這是須要purge操做,同時,其還對已經標記爲刪除但還未清理的無用clustered和secondary索引數據進行清除.mysql5.6開始,把purge thread專門從master thread中分離出來,其由innodb_purge_thread選項進行控制.默認爲1個,最大能夠調整爲32個.事務

8)checkpoint thread
checkpoint thread負責在redo log發生切換時,執行checkpoint.it

9)error monitor thread
error monitor thread負責mysql報錯的監控.

10)lock monitor threadlock monitor thread負責mysql鎖的監控.

相關文章
相關標籤/搜索