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

MySQL 開啟慢查詢日志 log-slow-queries 配置與分析最佳實踐

     編輯:MySQL 資料庫相關知識

配置文件永久生效

# Linux: /etc/my.cnf
# Windows: my.ini
[mysqld]
log-slow-queries = /tmp/mysql-slow.log
long_query_time = 2

關於 long_query_time 設置

  • 默認 10 秒,建議改為 1-2 秒
  • Web 應用單 SQL 超過 1 秒即屬較慢
  • MySQL 5.1.21+ 支持微秒級精度

日志字段深度解讀

Time: 120815 23:22:11
User@Host: root[root] @ localhost []
Query_time: 9.869362 Lock_time: 0.000035 Rows_sent: 1 Rows_examined: 6261774
SET timestamp=1294388531;
select count(*) from blog;
字段含義優化意義
Query_timeSQL 執行總耗時核心指標,越長越需優化
Lock_timeServer 層表鎖等待高則檢查鎖爭用
Rows_sent返回行數對比 Rows_examined 判斷索引效率
Rows_examined實際掃描行數遠大於 Sent 說明全表掃描

實時查看

tail -f /tmp/mysql-slow.log

三大避坑指南

  1. 日志 ≠ 真相:偶發慢查詢可能因鎖/系統繁忙,關注高頻慢 SQL
  2. 別開 log-queries-not-using-indexes:全表掃描全記錄,日志瞬間爆盤,掩蓋真正慢查詢
  3. 善用 mysqldumpslow:官方分析工具,配合 -s -t -g 快速定位 Top 慢查詢

進階:Percona Toolkit pt-query-digest

pt-query-digest /tmp/mysql-slow.log --limit 20 --filter '$event->{Query_time} > 1'

輸出含:指紋、執行次數、總耗時、平均耗時、Rows examined、完整 SQL 樣本,較 mysqldumpslow 更強大。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved