首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 線上 SQL 監控:status、processlist、explain 三板斧定位慢查詢

     編輯:MySQL 資料庫相關知識

步驟 1:檢查整體負載

mysql> STATUS;
-- 關鍵指標:
-- Slow_queries: 長時間非零說明有慢查詢
-- Questions: 總查詢數
-- Threads: 當前連線數

步驟 2:檢視當前執行緒

mysql> SHOW FULL PROCESSLIST;
+----+------+-----------+------+---------+------+-------+-----------------------+
| Id | User | Host      | db   | Command | Time | State | Info                  |
+----+------+-----------+------+---------+------+-------+-----------------------+
| 12 | app  | 10.0.1.5  | prod | Query   | 45   | Sending data | SELECT * FROM big_tbl |
+----+------+-----------+------+---------+------+-------+-----------------------+
  • Time:已執行秒數,超過 long_query_time 即為慢查詢
  • State:Sending data、Copying to tmp table、Locked 等提示瓶頸
  • Info:完整 SQL 文本(需 FULL 關鍵字)

步驟 3:分析執行計畫

mysql> EXPLAIN SELECT * FROM big_tbl WHERE col = 1;
+----+-------------+---------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table   | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+---------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | big_tbl | ALL  | NULL          | NULL | NULL    | NULL | 10M  | Using where |
+----+-------------+---------+------+---------------+------+---------+------+------+-------------+
  • type=ALL 確認全表掃描
  • key=NULL 無索引可用
  • rows=10M 掃描量巨大

進階監控工具

工具用途安裝
pt-query-digest慢查詢日誌聚合分析 TOP Npercona-toolkit
mysqldumpslow官方慢查詢摘要內建
innotop即時互動式監控CPAN
Prometheus + mysqld_exporter指標採集、Grafana 儀表板Docker/二進制

自動化殺掉長查詢(慎用)

-- 查詢超過 60 秒的非系統查詢
SELECT CONCAT('KILL ', id, ';') FROM information_schema.PROCESSLIST
WHERE TIME > 60 AND COMMAND = 'Query' AND USER != 'system_user'
INTO OUTFILE '/tmp/kill.sql';
SOURCE /tmp/kill.sql;

預防勝於治療

  1. 所有新上線 SQL 必經 EXPLAIN 審核
  2. 設定 long_query_time=1、log_queries_not_using_indexes=ON
  3. 定期 ANALYZE TABLE 更新統計
  4. 資料庫變更走審核流程,禁止直接生產 DDL
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved