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

MySQL 啟用一般查詢日誌 追蹤執行 SQL 完整指南

     編輯:MySQL 資料庫相關知識

SQL Server 有 Profiler,MySQL 如何追蹤執行的 SQL?最直接的方法是開啟 General Query Log(一般查詢日誌)。本文說明 Windows/Linux 環境下的配置步驟、日誌分析技巧與效能影響提醒。

一、Windows 環境配置

  1. 找到 my.ini(通常在 MySQL 安裝目錄,如 G:\Program Files (x86)\MySQL\MySQL Server 5.0\)
  2. 在 [mysqld] 區段下新增:
log = G:/Program Files (x86)/MySQL/MySQL Server 5.0/data/mysql.log
my.ini 配置範例
  1. 儲存檔案,重啟 MySQL 服務
  2. 日誌檔將出現在指定路徑(範例中為 data/mysql.log)

二、Linux 環境配置

  1. 編輯 /etc/my.cnf
  2. 在 [mysqld] 區段新增:
log = /var/log/mysql/mysql.log
  1. 確保目錄存在且 MySQL 進程有寫入權限:mkdir -p /var/log/mysql && chown mysql:mysql /var/log/mysql
  2. 重啟服務:systemctl restart mysqld 或 service mysql restart

三、動態開啟/關閉(無需重啟,MySQL 5.1+)

-- 查看狀態
SHOW VARIABLES LIKE 'general_log%';
-- general_log=OFF, general_log_file=/var/lib/mysql/host.log

-- 開啟
SET GLOBAL general_log = ON;
SET GLOBAL general_log_file = '/var/log/mysql/query.log';

-- 關閉
SET GLOBAL general_log = OFF;

四、日誌內容解讀

/usr/sbin/mysqld, Version: 5.7.33 (Ubuntu). started with:
Tcp port: 3306  Unix socket: /var/run/mysqld/mysqld.sock
Time                 Id Command    Argument
2023-05-01T10:15:23.123456Z  12 Connect   root@localhost on testdb
2023-05-01T10:15:23.123567Z  12 Query     SELECT * FROM users WHERE id = 1
2023-05-01T10:15:23.123678Z  12 Quit
  • Time:執行時間(含微秒)
  • Id:連線執行緒 ID
  • Command:Connect, Query, Quit, Prepare, Execute, Close stmt 等
  • Argument:完整 SQL 文本或連線資訊

五、效能與生產環境警示

影響說明
I/O 開銷每條 SQL 同步寫入磁碟,高併發下嚴重拖慢效能
磁碟空間日誌增長極快,需配合 logrotate 定期輪轉
安全性記錄含敏感資料的 SQL(如密碼、個資),存取需管控

生產環境建議:

  • 僅在除錯時段短暫開啟,問題排查後立即關閉
  • 長期審計請改用 Audit Plugin(MariaDB/MySQL Enterprise)或 log_output=TABLE 寫入 mysql.general_log 表配合定期清理
  • 慢查詢分析請用 Slow Query Log(slow_query_log=ON + long_query_time),而非一般日誌

六、進階:輸出至資料表

SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = ON;
-- 查詢日誌
SELECT * FROM mysql.general_log ORDER BY event_time DESC LIMIT 100;

善用一般查詢日誌快速定位問題,但務必謹記「用完即關」,避免成為效能殺手。

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