MySQL processlist中最哪些狀態要引起關注

JordanMcnei 8年前發布 | 11K 次閱讀 MySQL 數據庫服務器

來自: http://ourmysql.com/archives/1432

一般而言,我們在processlist結果中如果經常能看到某些SQL的話,至少可以說明這些SQL的頻率很高,通常需要對這些SQL進行進一步優化。

今天我們要說的是,在processlist中,看到哪些運行狀態時要引起關注,主要有下面幾個:

狀態 建議
copy to tmp table 執行ALTER TABLE修改表結構時 建議: 放在凌晨執行或者采用類似pt-osc工具
Copying to tmp table 拷貝數據到內存中的臨時表,常見于GROUP BY操作時 建議: 創建適當的索引
Copying to tmp table on disk 臨時結果集太大,內存中放不下,需要將內存中的臨時表拷貝到磁盤上,形成 #sql***.MYD、#sql***.MYI(在5.6及更高的版本,臨時表可以改成InnoDB引擎了,可以參考選項 default_tmp_storage_engine ) 建議: 創建適當的索引,并且適當加大 sort_buffer_size/tmp_table_size/max_heap_table_size
Creating sort index 當前的SELECT中需要用到臨時表在進行ORDER BY排序 建議: 創建適當的索引
Creating tmp table 創建基于內存或磁盤的臨時表,當從內存轉成磁盤的臨時表時,狀態會變成:Copying to tmp table on disk 建議: 創建適當的索引,或者少用UNION、視圖(VIEW)之類的
Reading from net 表示server端正通過網絡讀取客戶端發送過來的請求 建議: 減小客戶端發送數據包大小,提高網絡帶寬/質量
Sending data 從server端發送數據到客戶端,也有可能是接收存儲引擎層返回的數據,再發送給客戶端,數據量很大時尤其經常能看見備注:Sending Data不是網絡發送,是從硬盤讀取,發送到網絡是Writing to net 建議: 通過索引或加上LIMIT,減少需要掃描并且發送給客戶端的數據量
Sorting result 正在對結果進行排序,類似Creating sort index,不過是正常表,而不是在內存表中進行排序 建議: 創建適當的索引
statistics 進行數據統計以便解析執行計劃,如果狀態比較經常出現,有可能是磁盤IO性能很差 建議: 查看當前io性能狀態,例如iowait
Waiting for global read lock FLUSH TABLES WITH READ LOCK整等待全局讀鎖 建議: 不要對線上業務數據庫加上全局讀鎖,通常是備份引起,可以放在業務低谷期間執行或者放在slave服務器上執行備份
Waiting for tables, Waiting for table flush FLUSH TABLES, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE等需要刷新表結構并重新打開 建議: 不要對線上業務數據庫執行這些操作,可以放在業務低谷期間執行
Waiting for lock_type lock

等待各種類型的鎖:? Waiting for event metadata lock? Waiting for global read lock

? Waiting for schema metadata lock

? Waiting for stored function metadata lock

? Waiting for stored procedure metadata lock

? Waiting for table level lock

? Waiting for table metadata lock

? Waiting for trigger metadata lock

建議:比較常見的是上面提到的global read lock以及table metadata lock,建議不要對線上業務數據庫執行這些操作,可以放在業務低谷期間執行。如果是table level lock,通常是因為還在使用MyISAM引擎表,趕緊轉投InnoDB引擎吧,別再老頑固了

更多詳情可參考官方手冊: 8.14.2 General Thread States

 本文由用戶 JordanMcnei 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!