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

MySQL 5.1 新特性:通用查詢日誌與慢查詢日誌動態管理

     編輯:MySQL 資料庫相關知識

痛點回顧

MySQL 5.1.6 前,日誌啟用/關閉、輸出目標變更皆需重啟服務,線上排查慢查詢極不便。

5.1.6+ 動態日誌管理

支援 general_log、slow_query_log 兩大日誌:

  • 輸出目標:FILE(檔案)或 TABLE(CSV 表)
  • 全域動態變更:SET GLOBAL 即時生效,無需重啟

實操範例

-- 1. 設定輸出為檔案
SET GLOBAL log_output = 'FILE';

-- 2. 指定日誌檔路徑
SET GLOBAL general_log_file = '/tmp/general.log';
SET GLOBAL slow_query_log_file = '/tmp/slow.log';

-- 3. 開啟日誌
SET GLOBAL general_log = ON;
SET GLOBAL slow_query_log = ON;

-- 4. 關閉日誌
SET GLOBAL general_log = OFF;
SET GLOBAL slow_query_log = OFF;

TABLE 輸出模式

  • 日誌寫入 mysql.general_log、mysql.slow_log 兩張 CSV 引擎表
  • 可 ALTER TABLE ... ENGINE=MyISAM 轉為高效查詢引擎
  • 優點:可用 SQL 直接查詢、過濾、統計日誌
  • 缺點:高頻寫入下 CSV 效能較差,建議僅開啟慢查詢日誌用 TABLE 模式

慢查詢日誌關鍵參數

SET GLOBAL long_query_time = 1;        -- 超過 1 秒記錄(支援微秒)
SET GLOBAL log_queries_not_using_indexes = ON;  -- 記錄未用索引查詢
SET GLOBAL min_examined_row_limit = 100;        -- 忽略掃描少於 100 列的查詢

最佳實踐

  1. 平時關閉 general_log,僅除錯時短暫開啟
  2. slow_query_log 長期開啟,long_query_time=1,輸出 TABLE 便於分析
  3. 定期 pt-query-digest 分析慢查詢,產出優化清單
  4. 配合 log_slow_admin_statements 記錄管理指令
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved