- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
在 歡迎來到藍隊云技術小課堂,每天分享一個技術小知識。
MySQL 中,慢查詢日志(Slow Log)是我們優化數據庫性能時非常重要的一個工具。它記錄了執行時間超過指定閾值的 SQL 查詢,幫助我們找出性能瓶頸,進而對查詢進行優化。特別是在高負載環境中,慢查詢日志能夠讓我們迅速定位到執行時間較長的查詢,采取適當的優化措施,比如調整查詢語句、添加索引等。
開啟慢查詢日志并不復雜,首先需要在 MySQL 的配置文件中進行如下設置:
1. slow_query_log:設置為 ON 來啟用慢查詢日志。
2. slow_query_log_file:指定慢查詢日志的存儲路徑。
3. long_query_time:定義查詢執行時間的閾值,只有當查詢執行時間超過此值時才會被記錄。
例如,在 MySQL 配置文件中添加如下內容:
[mysqld]slow_query_log = 1slow_query_log_file = /path/to/slow-query.loglong_query_time = 1
這樣設置之后,執行時間超過 1 秒的查詢就會被記錄到指定的日志文件中。請確保根據實際情況選擇適合的時間閾值。
除了基本的設置外,MySQL 還提供了一些額外的設置,用于更精細化地記錄慢查詢日志:
· log_slow_admin_statements:啟用后,可以記錄管理語句(如 ALTER TABLE、CREATE INDEX 等)。
· log_queries_not_using_indexes:開啟后,所有不使用索引的查詢都會被記錄,無論其執行時間是否超過 long_query_time。
· min_examined_row_limit:設置記錄的最小行數。低于該行數的查詢不會被記錄。一般情況下,建議將該值設置為 0。
慢查詢日志的每條記錄中包含了執行時間、鎖定時間、發送行數、檢查行數等信息。以下是慢查詢日志中常見的字段:
· Query_time:查詢的執行時間,單位為秒。
· Lock_time:獲取鎖的時間,單位為秒。
· Rows_sent:發送給客戶端的行數。
· Rows_examined:MySQL 在執行查詢時檢查的行數。
從 MySQL 8.0.14 開始,慢查詢日志輸出增加了一些額外的字段,能夠提供更多的細節信息,如下所示:
· Thread_id:語句執行的線程 ID。
· Errno:執行查詢時的錯誤號。
· Killed:如果查詢被終止,則會顯示錯誤號指示的原因,正常終止則為 0。
· Start:查詢開始執行的時間。
· End:查詢執行完成的時間。
通過這些信息,我們可以更加精確地分析慢查詢,找到執行時間長的原因,并進行針對性的優化。
藍隊云官網上擁有完善的技術支持庫可供參考,大家可自行查閱,更多技術問題,可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,需要的朋友可以直接咨詢。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP