SQL優化(二) 慢查詢

2021-10-03 07:06:45 字數 1210 閱讀 4664

mysql的慢查詢日誌是mysql提供的一種日誌記錄方式,它主要是用來記錄mysql執行語句過程中,響應時間超過閥值的語句,這個閥值可以通過long_query_time去指定,比如說如果我們將long_query_time指定為5,則意思執行耗時5秒以上的語句都會被我們的慢查詢日誌給記錄下來.

通過使用慢查詢日誌,我們可以先捕獲耗時的語句,然後再結合explain執行計畫進行全面的分析,從而達到優化的目的

預設情況下,mysql資料庫並沒有開啟慢查詢日誌,因為開啟慢查詢日誌記錄本身就需要消耗資料庫伺服器效能,需要我們手動來開啟,如果不是專門做優化的話,不建議開啟慢查詢日誌

檢視是否開啟和如何開啟慢查詢日誌

-- 檢視

show variables like '%slow_query_log%';

--開啟(注意:只是臨時生效,資料庫重啟之後,失效)

set global slow_query_log=1;

--永久開啟

-- 1.修改my.cnf檔案,在[mysqld]下增加或修改引數

slow_query_log=1;

slow_query_log_file="檔案路徑/kaijun-slow.log"; (如果不指定這一行的話,系統缺省會給乙個預設檔名)

-- 2. 重啟mysql伺服器

設定慢查詢日誌的閥值

-- 檢視當前閥值(預設是10s)

show global variables like 'long_query_time';

-- 設定閥值

long_query_time=秒數

-- 注意: 只有sql語句耗時大於long_query_time的語句才會被記錄下來

除錯語句

select sleep(秒數);
檢視當前系統中慢查詢出現的次數

show global status like '%slow_queries%';
慢查詢開啟配置模版

slow_query_log=1

slow_query_log_file="檔案路徑/kaijun-slow.log"

long_query_time=秒數

log_output=file,table (日誌輸出到檔案和mysql資料庫中的slow_log表中)

SQL優化(二) 慢查詢

mysql的慢查詢日誌是mysql提供的一種日誌記錄方式,它主要是用來記錄mysql執行語句過程中,響應時間超過閥值的語句,這個閥值可以通過long query time去指定,比如說如果我們將long query time指定為5,則意思執行耗時5秒以上的語句都會被我們的慢查詢日誌給記錄下來.通過...

SQL慢查詢優化

3月19日,3月20日的18 00 20 00之間,db伺服器的cpu load飆公升 dba提出問題原因是sql where rest id and state and id and valid 掃瞄行數太多,執行時間過長 在b端心跳連線時,會傳 queue marker 引數,含義為上次處理的最...

sql查詢慢優化

select g.goods id,g.type id,g.user id,g.productname,g.img,g.intro,g.attr,u.companyname,u.enloginname,u.userid from site goods g force,ucenter member u...