MySQL 慢日志相關(guān)知識總結(jié)
1.慢日志簡介
慢日志全稱為慢查詢?nèi)罩荆⊿low Query Log),主要用來記錄在 MySQL 中執(zhí)行時間超過指定時間的 SQL 語句。通過慢查詢?nèi)罩?,可以查找出哪些語句的執(zhí)行效率低,以便進行優(yōu)化。
默認情況下,MySQL 并沒有開啟慢日志,可以通過修改 slow_query_log 參數(shù)來打開慢日志。與慢日志相關(guān)的參數(shù)介紹如下:
- slow_query_log:是否啟用慢查詢?nèi)罩?,默認為0,可設置為0、1,1表示開啟。
- slow_query_log_file:指定慢查詢?nèi)罩疚恢眉懊Q,默認值為host_name-slow.log,可指定絕對路徑。
- long_query_time:慢查詢執(zhí)行時間閾值,超過此時間會記錄,默認為10,單位為s。
- log_output:慢查詢?nèi)罩据敵瞿繕?,默認為file,即輸出到文件。
- log_timestamps:主要是控制 error log、slow log、genera log 日志文件中的顯示時區(qū),默認使用UTC時區(qū),建議改為 SYSTEM 系統(tǒng)時區(qū)。
- log_queries_not_using_indexes:是否記錄所有未使用索引的查詢語句,默認為off。
- min_examined_row_limit:對于查詢掃描行數(shù)小于此參數(shù)的SQL,將不會記錄到慢查詢?nèi)罩局?,默認為0。
- log_slow_admin_statements:慢速管理語句是否寫入慢日志中,管理語句包含 alter table、create index 等,默認為 off 即不寫入。
一般情況下,我們只需開啟慢日志記錄,配置下閾值時間,其余參數(shù)可按默認配置。對于閾值時間,可靈活調(diào)整,比如說可以設置為 1s 或 3s 。
2.慢日志實戰(zhàn)
在配置文件中,我們可以設置以下幾個慢日志相關(guān)參數(shù):
# 慢查詢?nèi)罩鞠嚓P(guān)配置,可根據(jù)實際情況修改 vim /etc/my.cnf [mysqld] slow_query_log = 1 slow_query_log_file = /data/mysql/logs/slow.log long_query_time = 1 log_timestamps = SYSTEM log_output = FILE
下面我們具體看下,慢日志會記錄哪些內(nèi)容?我們執(zhí)行一條較慢的查詢 SQL ,來看下在慢日志中的體現(xiàn)。
# 該條SQL執(zhí)行時間超過閾值 # Time: 2021-05-13T17:38:03.687811+08:00 # User@Host: root[root] @ [192.168.85.0] Id: 2604943 # Query_time: 1.099889 Lock_time: 0.000144 Rows_sent: 39 Rows_examined: 45305 SET timestamp=1620898683; select * from test_table where col_name like '%測試%';
如果啟用了慢速查詢?nèi)罩荆⑶疫x擇了 FILE 作為輸出目標,則寫入日志的每個語句都以 # 字符開頭。對于每一組慢SQL,第一行記錄的是該條 SQL 執(zhí)行的時刻(如果 log_timestamps 參數(shù)為 UTC ,則改時間會顯示 UTC 時區(qū)時間),第二行記錄的是執(zhí)行該語句的用戶和 IP 以及鏈接 id ,第三行的幾個字段解釋如下:
- Query_time: duration 語句執(zhí)行時間,以秒為單位。
- Lock_time: duration 獲取鎖的時間(以秒為單位)。
- Rows_sent: N 發(fā)送給 Client 端的行數(shù)。
- Rows_examined: N 服務器層檢查的行數(shù)(不計算存儲引擎內(nèi)部的任何處理)。
下面兩行分別是此語句執(zhí)行時候的時間戳和具體慢 SQL 。
在實際環(huán)境下,不建議開啟 log_queries_not_using_indexes 參數(shù),此參數(shù)打開后可能導致慢日志迅速增長。對于慢日志的篩選與分析,我們可以借助 mysqldumpslow、pt-query-digest 等工具來分析。對于慢日志文件,要定期進行歸檔處理,比如可以暫時關(guān)閉慢日志,然后將舊文件重命名,之后再開啟慢日志,這樣就會寫入新的日志文件中,有效減小日志體積。
以上就是MySQL 慢日志相關(guān)知識總結(jié)的詳細內(nèi)容,更多關(guān)于MySQL 慢日志的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL高級特性——數(shù)據(jù)表分區(qū)的概念及機制詳解
當數(shù)據(jù)表過大時,通過普通的查詢優(yōu)化技巧已經(jīng)無法大幅度提升性能,此時往往需要進行分區(qū)分表優(yōu)化。分區(qū)其實是將一張邏輯上統(tǒng)一的表在物理上劃分成了多張表。分區(qū)操作對使用者而言是一個黑盒操作,但是如果你從文件系統(tǒng)上看,就會看到分區(qū)數(shù)據(jù)表的實際存儲方式是分開的。2021-05-05
MySQL 使用 Performance Schema 定位和解決慢
本文介紹了如何使用MySQL的PerformanceSchema來定位和解決慢SQL查詢問題,通過啟用PerformanceSchema并分析相關(guān)的系統(tǒng)表,可以收集到詳細的性能數(shù)據(jù),從而識別出影響性能的SQL語句,優(yōu)化策略包括優(yōu)化查詢語句、調(diào)整數(shù)據(jù)庫配置等2025-02-02
mysql中關(guān)于between和in的區(qū)別
這篇文章主要介紹了mysql中關(guān)于between和in的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
mysql一條sql查出多個條件不同的sum或count問題
這篇文章主要介紹了mysql一條sql查出多個條件不同的sum或count問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
mysql?8.0.27?安裝配置方法圖文教程(Windows64位)
這篇文章主要為大家詳細介紹了mysql?8.0.27?下載、安裝與配置圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04

