top (%cpu load %MMEM) free -gt vmstat -S m 1 (procs io cpu) sar -u 1 (%user) sar -d 1
查看mysql線程狀態 show [full] processlistmysql
長時間的Sending datasql
從引擎層讀取數據返回給server端 長時間存在的緣由: 1 沒有合適的索引 查詢效率低下 2 讀取大量數據 讀取緩慢 3 系統負載高 讀取緩慢 如何作: 1 加上合適的索引 2 改寫sql 3 增長LIMIT限制每次讀取量 4 檢查&升級IO設備性能
長時間等待MDL鎖 (waiting for table metadata lock)工具
緣由: DDL被阻塞 進而阻塞其餘後續sql DDL以前的sql長時間未結束 如何作: 1 提升每條sql的效率 2 kill掉長時間運行的sql 3 把DDL放在夜間低谷時段 4 採用pt-osc執行DDL
長時間的sleep性能
可能有行鎖(甚至是表鎖未釋放)測試
如何作:
1 適當調低timeout
2 主動kill超時不活躍鏈接
3 按期檢查鎖、鎖等待
4 能夠利用pt-kill工具優化
其餘狀態spa
Copy to tmp table [on disk] 執行alter table修改表結構,須要生成臨時表 建議放在夜間低谷進行, 或者用pt-osc Creating tmp table 常見於group by沒有索引的狀況 須要拷貝數據到臨時表[內存/磁盤上] 執行計劃中會出現Using temporary關鍵字 建議建立合適的索引,消除臨時表 Creating sort index 常見於order by沒有索引的狀況 須要進行filesort排序 執行計劃中會出現Using filesort關鍵字 建議建立排序索引