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

MySQL 通用查詢日誌與慢查詢日誌啟用、分析與效能影響控制

     編輯:MySQL 資料庫相關知識

配置檔啟用(永久生效)

[mysqld]
# 通用查詢日誌(記錄所有 SQL,高負載慎用)
general_log = 1
general_log_file = /var/log/mysql/general.log

# 慢查詢日誌(核心調優依據)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1          # 秒,建議 0.5~1
log_queries_not_using_indexes = 1
log_output = FILE            # 或 TABLE (mysql.slow_log)
log_slow_admin_statements = 1
log_slow_slave_statements = 1

線上動態開關(無需重啟)

-- 開啟
SET GLOBAL general_log = ON;
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 0.5;

-- 關閉
SET GLOBAL general_log = OFF;
SET GLOBAL slow_query_log = OFF;

-- 查看狀態
SHOW VARIABLES LIKE '%log%';

日誌分析工具鏈

mysqldumpslow 實用範例

# Top 10 耗時查詢
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log

# Top 10 掃描行數
mysqldumpslow -s r -t 10 /var/log/mysql/slow.log

# 含特定表
mysqldumpslow -s t "/var/log/mysql/slow.log" | grep users

pt-query-digest 黃金組合

# 產生詳細報表
pt-query-digest /var/log/mysql/slow.log --limit 20 --output json > report.json

# 即時監控(類 tail -f)
pt-query-digest --processlist h=localhost,u=root,p=pass --interval 1 --run-time 300

效能影響與輪轉策略

工具用途安裝
mysqldumpslow官方內建,彙總慢查詢MySQL 附屬
pt-query-digestPercona Toolkit,深度分析yum install percona-toolkit
mysqlsla統計分析,輸出報表CPAN/源碼
go-mysql-slowlogGo 寫入,高效能解析GitHub Release

logrotate 範例

/var/log/mysql/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 640 mysql adm
    sharedscripts
    postrotate
        mysqladmin flush-logs > /dev/null 2>&1 || true
    endscript
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
日誌類型IO 影響建議保留輪轉
General Log極大(全量 SQL)僅除錯時短暫開啟logrotate daily, size 100M
Slow Log極小(僅慢查詢)長期開啟,保留 30 天logrotate daily, compress
Binary Log中等依備份策略expire_logs_days=7