了解mysql processlist_哪些MySQL 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)、子查詢(SUBQUERY)之類的,確實需要用到臨時表的時候,可以在session級臨時適當調大?tmp_table_size/max_heap_table_size?的值
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引擎吧,別再老頑固了
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的了解mysql processlist_哪些MySQL processlist状态要引起关注的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5的交互标签,html5里交互元
- 下一篇: linux db2 权限管理,DB2五种