1.引入
當我們通過我們編寫的sql去操作MySQL數據庫的時候,我們會發現由於SQL語句本身的原因,部分的SQL語句的執行會比較慢,從而會導致整個系統的運行不流暢。那麼如果說MySQL提供一個功能,專門給我們解決把執行的慢的那一部分語句給標註出來。這樣我們解決問題就會更加的快速。那麼下面呢,我們就一起來看一下MySQL提供的慢查詢日誌。
2.什麼是MySQL的慢查詢日誌?
所謂的慢查詢日誌,就是和其字面意思一樣,是MySQL數據庫提供的一種日誌記錄。它主要是用於記錄在MySQL中響應時間超過闕值的語句。具體的就是指運行時間超過long_query_time值的SQL。就會被記錄到日誌中去。long_query_time默認的值大小是10。默認的情況下,MySQL數據庫沒有開啓慢查詢日誌,需要我們手動來設置這一個參數。當然,如果不是調優的需要,一般是不建議開啓這一個參數。因爲開啓慢查詢日誌會佔用空間。這樣或多或少會帶來一定的性能的影響。
3.如何查看MySQL的慢查詢日誌是否開啓?
(1).查看是否開啓:
show variables like '%low_query_log%';
查詢結果爲:
(2).如何開啓?
set global slow_query_log = 1;
查看結果:
注意:設置開啓慢查詢日誌僅僅只對當前的操作有效,如果需要永久的生效,可以在配置文件中設置如下參數。但是一般這樣的操作是屬於運維經理或者是專業的DBA來操作的。
slow_query_log=1
show_query_log_file=C:\ProgramData\MySQL\MySQL Server 5.5\Data\DYHGUJX80GYHV89-slow.log
4.什麼樣子的sql纔會被記錄到慢查詢日誌文件中呢,如何使用?
一般慢的定義是有參數long_query_time控制,默認值爲10.我們先在命令界面查看其大小以及對應的情況:
show variables like '%long_query_time%';
查詢結果爲:
也就是說這一個SQL語句執行的時間大於10秒就會被記錄到我們指定的文件中去。
一般情況系統在運行的時候一條SQL執行10秒幾乎是不可能的。那麼我們就需要去調整這一個閾值。
調整使用如下命令:
set global long_query_time = 2;
新開一個會話:再次查看閾值:
5.測試
由於沒有足夠大的數據量用來測試。那麼我們使用線程的方式來實現延時執行SQL語句:
查看我們的慢查詢日誌文件中是否已經有記錄:
點擊查看裏面的內容信息:
查看當前的系統中有多少條慢查詢記錄:(該語句可以當做是系統是否有問題的一個檢查標準)
6.MySQL數據庫日誌查詢分析工具:mysqldumpslow(略)