mysql後臺執行緒詳解
1.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等.
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從讀請求佇列獲取讀任務並完成.
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.
9)error monitor thread
error monitor thread負責mysql報錯的監控.
10)lock monitor thread
lock monitor thread負責mysql鎖的監控.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-2674294/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL執行緒狀態詳解MySql執行緒
- MySQL 配置後臺InnoDB I/O執行緒數MySql執行緒
- 後臺執行緒(daemon)執行緒
- 多執行緒詳解執行緒
- 詳解多執行緒執行緒
- 多執行緒03:?執行緒傳參詳解執行緒
- 詳解Java執行緒安全Java執行緒
- iOS 多執行緒詳解iOS執行緒
- Java執行緒池詳解Java執行緒
- Java多執行緒詳解Java執行緒
- Java 執行緒池詳解Java執行緒
- java多執行緒與併發 - 執行緒池詳解Java執行緒
- JAVA多執行緒詳解(3)執行緒同步和鎖Java執行緒
- MySQL:Innodb purge執行緒略解MySql執行緒
- Android 多執行緒-----AsyncTask詳解Android執行緒
- iOS多執行緒:NSOperation詳解iOS執行緒
- iOS多執行緒:GCD詳解iOS執行緒GC
- JAVA多執行緒詳解(一)Java執行緒
- Java 多執行緒詳解(一)Java執行緒
- Java多執行緒超詳解Java執行緒
- Java—執行緒的生命週期及執行緒控制方法詳解Java執行緒
- iOS多執行緒詳解:概念篇iOS執行緒
- 詳解 JUC 執行緒池中的 ThreadPoolExecutor執行緒thread
- Java多執行緒詳解總結Java執行緒
- 執行緒池知識點詳解執行緒
- Java中的多執行緒詳解Java執行緒
- Java中的執行緒同步詳解Java執行緒
- Java同步之執行緒池詳解Java執行緒
- Flutter非同步與執行緒詳解Flutter非同步執行緒
- Java多執行緒之synchronized詳解Java執行緒synchronized
- 詳解linux後臺、前臺執行程序Linux行程
- java--執行緒池--建立執行緒池的幾種方式與執行緒池操作詳解Java執行緒
- 詳解執行緒池的作用及Java中如何使用執行緒池執行緒Java
- mysql explain 執行計劃詳解MySqlAI
- MySQL Explain執行計劃 - 詳解MySqlAI
- MySQL_殺mysql執行緒MySql執行緒
- Java多執行緒詳解——一篇文章搞懂Java多執行緒Java執行緒
- 多執行緒系列(二十) -CompletableFuture使用詳解執行緒