MySQL processlist中最哪些狀態要引起關注
來自: 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!