您好,登錄后才能下訂單哦!
什么是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鎖的監控.
看完上述內容,你們掌握什么是mysql后臺線程的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。