mysql的查詢日誌 mysql

2021-10-17 11:35:25 字數 1904 閱讀 9808

這篇文章總結了mysql中查詢日誌的知識點。

mysql中,日誌可以按照功能分為如下幾類。

錯誤日誌

查詢日誌

慢查詢日誌

二進位制日誌

中繼日誌

innodb儲存引擎級別的事務日誌

查詢日誌

查詢日誌在mysql中被稱之為general log(通用日誌),不要被"查詢日誌"的名字誤導,錯誤的以為查詢日誌只會記錄select語句,其實不然,查詢日誌記錄了資料庫執行的命令,不管這些語句是否正確,都會被記錄,我想這也是general log之所以"通用"的原因吧,由於資料庫操作命令有可能非常多而且執行比較頻繁,所以當開啟了查詢日誌以後,資料庫可能需要不停的寫入查詢日誌,這樣會增大伺服器的io壓力,增加很多系統開銷,所以預設情況下,mysql的查詢日誌是沒有開啟的,但是開啟查詢日誌也有助於我們分析哪些語句執行密集,執行密集的select語句對應的資料是否能夠被快取,查詢日誌也可以幫助我們分析問題,所以,我們可以根據實際情況決定是否開啟查詢日誌,如果需要可以手動開啟。如果開啟了查詢日誌,那麼我們可以通過如下3種方式儲存查詢日誌。

方式1:將查詢日誌存放於指定的日誌檔案中。

方式2:將查詢日誌存放於mysql.general_log表中。

方式3:將查詢日誌同時存放於指定的日誌檔案與mysql庫的general_log表中。

那麼現在,我們就來看一下查詢日誌的相關引數。

使用如下語句,檢視查詢日誌的相關引數。

show variables where variable_name like "%general_log%" or variable_name="log_output";

general_log:表示查詢日誌是否開啟,on表示開啟,off表示未開啟,預設為off

log_output:表示當查詢日誌開啟以後,以哪種方式存放,log_output可以設定為4種值,"file"、"table"、"file,table"、"none"。此值為"file"表示存放於指定的檔案中,此值為"table"表示存放於mysql庫的general_log表中,此值為"file,table"表示將查詢日誌同時存放於指定的檔案與general_log表中,一般不會進行這樣的設定,因為這樣會徒增很多io壓力,如果開啟,建議設定為"table",此值為"none"時表示不記錄查詢日誌,即使general_log設定為on,如果log_output設定為none,也不會記錄查詢日誌,其實,log_output不止使用者控制查詢日誌的輸出,慢查詢日誌的輸出也是由此引數進行控制,也就是說,log_output設定為file,就表示查詢日誌和慢查詢日誌都存放到對應的檔案中,設定為table,查詢日誌和慢查詢日誌就都存放在對應的資料庫表中。

general_log_file:表示當log_output的值設定為"file"或者"file,table"時,將查詢日誌存放於哪個日誌檔案中,換句話說,就是通過此引數指定查詢日誌的檔案,預設情況下,此檔名於主機名相同,而且使用了相對路徑,預設位置為datadir變數所對應的目錄位置,一般為/var/lib/mysql目錄下。

為了演示效果,我們此處暫時將查詢日誌開啟,並且將查詢日誌同時記錄到general_log表與指定的日誌檔案中,但是在實際使用中,不推薦這樣做,因為我們並沒有將配置寫入配置檔案中,所以下圖中的設定將在重啟mysql後失效,因為關於日誌的引數都是全域性變數,所以設定這些變數時需要加上global關鍵字。

好了,查詢日誌已經開啟,我們來執行一些語句,看看查詢日誌中能否檢視到這些命令,如下圖所示,我們切換到了zsythink資料庫,對錶a進行了一些增刪改查的操作,並且故意執行了一條錯誤的語句。

我們先到指定的日誌檔案中檢視一下,對應的查詢日誌是否已經被記錄了,從下圖中可以看出,剛才執行的所有語句,都已經被記錄到了查詢日誌當中,包括我們故意寫錯的那一條語句,也被準確的記錄了。

當然,由於我們同時將查詢日誌記錄到了日誌檔案與對應的資料庫中,所以,在mysql.general_log表中也能查詢到剛才執行的命令。

mysql查詢日誌分析 mysql日誌分析

日誌檔案 log 就是乙個跟蹤記錄的列表,它可以協助我們時刻掌握系統及應用服務的動作狀態,在故障排查的時候提供最詳細準確地資訊,幫助我們快速查詢原因,減少我們憑主觀的經驗去猜測,這樣的答案更具有說服力,機器通常是不會撒謊的。任何的系統,無論是作業系統 資料庫 應用伺服器他們都會有自己的log檔案,而...

mysql開啟查詢日誌 MySQL 檢視查詢日誌

前言 在開發過程中,使用到了mysql資料庫,但是想知道每次對資料庫進行了哪些操作,方便對自己的 進行優化,這時候就需要用到查詢日誌genral log。動態修改配置 mysql show variables like general log variable name value general ...

Mysql日誌 慢查詢日誌

3.設定variables的示範 慢查詢日誌能為sql語句的優化帶來很好的幫助。可以設定乙個閾值,將執行時間超過該值的所有sql語句都記錄到慢查詢日誌檔案中。閾值long query time表示慢查詢的時間閾值,預設值為10,代表10秒。注 慢查詢日誌只會記錄大於閾值的sql語句,小於和等於的sq...