日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

mysql的worker 线程_MySQL线程

發布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql的worker 线程_MySQL线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當MySQL服務器本身遇到性能問題的時候,一般可以通過slow log來找到耗時比較多的SQL語句,并且進一步通過explain來優化和改進SQL執行速度。這種方法有這幾方面的限制:首先,并不是所有的問題都是因為異常SQL造成的,當大量SQL請求時間比較長,但不到slow log閾值的時候(通常線上無法將slow log閾值設置的較小),MySQL服務器負載也會很高;其次,MySQL服務器本身的狀態會影響SQL的執行,有一些沒有問題的SQL語句在MySQL負載較高時,也會進入slow log。

另外一種方法是通過MySQL的Performance Schema、Innodb status以及MySQL status等MySQL統計信息來定位問題;這通常需要對MySQL的實現有相當的了解;并且定位問題不是非常直接。

本人認為除了以上兩種辦法之外,可以通過strace MySQL的線程來定位性能瓶頸。這種方法可以定位出因為系統IO(包括網絡)、內存、線程同步(MySQL鎖使用錯誤)等造成的問題;也就是說,如果能確定MySQL Server不存在大量需要在用戶態進行的計算(例如浮點運算、字符串處理等),都可以嘗試使用此方法。

下面將介紹MySQL線程相關的一些信息,以MySQL5.6.29為例,MySQL5.7會有一些不一樣。

1、多線程程序

MySQL只有一個進程,使用多線程實現并發。使用InnoDB作為存儲引擎的情況下,主要關注MySQL和InnoDB創建的線程。

可以使用MySQL的Performance Schema.threads表來查看MySQL的線程。這個表含所有MySQL創建并活躍的線程以及部分InnoDB線程。

2、線程池

每次和MySQL Server建立連接,MySQL服務器都會創建或分配一個線程處理對應的請求。

MySQL會維護一個線程池管理這些工作線程。只有當工作線程的正在響應請求時,才會進入Performance Schema.threads表。可以通過向MySQL進程發送SIGHUP信號來釋放所有的線程并創建一個只有一個線程的線程池。

3、InnoDB線程

InnoDB會創建很多功能線程(都是運行期間常駐線程),用于處理異步任務。但也許InnoDB有很多代碼是臨時工寫的,有部分線程沒有使用MySQL提供的Performance Schema機制注冊到threads表中。

4、線程對應

由于threads表中沒有包含線程的系統id,甚至由于第2點和第3點的原因(部分線程不會出現在threads)表中,因此無法通過threads表將MySQL的線程對應到系統線程。

以下表為本人梳理的線程創建順序及數量,可以通過將MySQL服務器按照線程ID進行排序,然后一一對應上。(注:由于MySQL在啟動過程中需要創建一些臨時線程,因此MySQL的線程ID并不是連續的)

下表所列CPU時間為本人的線上環境的某一個從庫的時間。

創建順序線程名稱線程數量線程作用CPU時間

1main1主線程

2innodb ibuff io thread1innodb inser buff寫入和讀取線程0s

3innodb log io thread1innodb undo log寫入和讀取線程1s

4innodb read threadsinnodb_read_io_threadsinnodb數據庫文件read ahead線程9s*8

5innodb write threadsinnodb_write_io_threadsinnodb數據庫文件寫入線程2m*8

6lock_wait_timeout_thread1watches the timeouts for lock waits0.99s

7srv_error_monitor_thread1warns of long semaphore waits33s

8srv_monitor_thread1prints InnoDB monitor info0.15s

9srv_master_thread1does purge and other utility operations4s

10srv_purge_coordinator_thread1redo log清理1h

11srv_worker_threadinnodb_purge_threads – 1purge worker0

12buf_flush_page_cleaner_thread1flush page53m

13buf_dump_thread1buffer pool dump/load thread0s

14dict_stats_thread1dict stats gathering thread0.11s

15fts_optimize_thread1Optimize all FTS tables0.15s

16signal_handler1signal handler thread0s

17slave_io1slave io19m

18slave_sql1slave sql11h

19connectionnhandler0

下一節,本人將分享關于使用strace跟蹤線程的操作經驗。

總結

以上是生活随笔為你收集整理的mysql的worker 线程_MySQL线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。