面試題 MySQL的慢查詢 如何監控 如何排查?

2021-10-12 09:37:12 字數 1321 閱讀 2774

慢查詢,顧名思義就是很慢的查詢。mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long_query_time值的sql,則會被記錄到慢查詢日誌中。long_query_time的預設值為10s。預設情況下,mysql資料庫並不啟動慢查詢日誌,需要我們手動來設定這個引數,當然,如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌或多或少會帶來一定的效能影響。慢查詢日誌支援將日誌記錄寫入檔案,也支援將日誌記錄寫入資料庫表。

要使用慢查詢日誌,首先要檢查慢查詢日誌是否開啟,如果沒有,將其開啟,並設定慢查詢閾值即慢查詢檔案儲存位置等屬性。通過下面的命令檢視相關屬性

show variables like '%query%';
主要看這三個屬性:

使用以下命令設定這些屬性值:

set global slow_query_log = on; # 開啟慢查詢日誌

set global long_query_time = 1; # 超過1秒的語句被定義為慢語句,注意設定了之後需要重新連線才有效

2.1 檢視曾經執行完成的慢查使用日誌分析工具mysqldumpslow來分析慢查詢日誌。

2.2 檢視正在進行的慢查sql

使用show processlist命令顯示使用者正在執行的執行緒。需要注意的是,除了 root 使用者能看到所有正在執行的執行緒外,其他使用者都只能看到自己正在執行的執行緒。show processlist 顯示的資訊都是來自mysql系統庫information_schema 中的 processlist 表。這個表中有這些資訊:

我們可以在processlist中查詢執行時間超所某值的執行緒,如:

select * from information_schem.processlist where command != 'sleep' and time > 300 order by time desc;
2.3 通過在sql語句前加上explain命令,來顯示這句sql語句的執行計畫。當通過排查定位到慢查詢sql後,就需要通過explain命令分析sql的執行計畫並進行相應的優化

mysql 不用怕面試題 MySQL 面試題

資料庫事務的四個特性及含義原子性 atomicity 一致性 correspondence 隔離性 isolation 永續性 durability 原子性 整個事務中的所有操作,要麼全部完成,要麼全部不完成。事務在執行過程中發生錯誤,會被回滾 rollback 到事務開始前的狀態,就像這個事務從來...

MYSQL面試 慢查詢(七)

10.慢查詢學習 show variables like slow query log 檢視慢查詢日誌狀態 set global slow query log 1 開啟 注意,沒事不要開,會影響效能 使用這條語句開啟只對當前資料庫生效,mysql重啟失效 show global variables ...

mysql資料結構面試題 MySQL 面試題

mysql 的一些面試題,有的是平時聊到的,有的是聽別人說的,有的是工作中遇到的,特此彙總一下,有問有答。一條 sql 查詢語句執行流程?1 聯結器。客戶端和伺服器 tcp 握手後,驗證使用者名稱密碼。使用者名稱密碼通過後,聯結器會到許可權表中查詢你擁有的許可權。之後這個連線裡面的許可權判斷邏輯,都...