MySQL之慢查詢日誌和通用查詢

2022-05-13 02:51:08 字數 3201 閱讀 2401

mysql中的日誌包括:錯誤日誌、二進位制日誌、通用查詢日誌、慢查詢日誌等等。這裡主要介紹下比較常用的兩個功能:通用查詢日誌和慢查詢日誌。

1、通用查詢日誌:記錄建立的客戶端連線和執行的語句。

2、慢查詢日誌:記錄所有執行時間超過longquerytime秒的所有查詢或者不使用索引的查詢

慢查詢日誌可以幫助我們知道哪些sql語句執行效率低下,所以使用慢查詢日誌在我們日常開發中是十分有用的.

一. 慢查詢日誌開啟

# 檢查是否開啟

引數說明:  

(1)slow_query_log的值為on為開啟慢查詢日誌,off則為關閉慢查詢日誌。

(2)slow_query_log_file的值是記錄的慢查詢日誌到檔案中(注意:預設名為主機名.log,慢查詢日誌是否寫入指定檔案中,需要指定慢查詢的輸出日誌格式為檔案,相關命令為:show variables like 『%log_output%』;去檢視輸出的格式)。

(3)long_query_time指定了慢查詢的閾值,即如果執行語句的時間超過該閾值則為慢查詢語句,預設值為10秒。

(4)log_queries_not_using_indexes如果值設定為on,則會記錄所有沒有利用索引的查詢(注意:如果只是將log_queries_not_using_indexes設定為on,而將slow_query_log設定為off,此時該設定也不會生效,即該設定生效的前提是slow_query_log的值設定為on),一般在效能調優的時候會暫時開啟。

如果是關閉的情況下,slow_query_log會是off,這個時候進行開啟

# 如果沒有開啟,也可以在執行時開啟這個引數。說明是動態引數

setglobal slow_query_log=on;

永久開啟,修改配置檔案:

windows:  修改配置檔案\mysql\bin\mysql.ini 新增到[mysqld]中

#慢查詢日誌

slow_query_log = 1

long_query_time = 2

slow_query_log_file = f:\mysql\log\mysqlslowquery.log

linux下的設定: 同上,只不過,修改的配置檔案是my.cnf檔案

有時候會找不到該檔案: 使用命令進行查詢

mysql --help|grep '

my.cnf

'ps aux|grep mysql|grep '

my.cnf

'locate my.cnf

設定輸出日誌:

#慢查詢日誌輸出到表中(即mysql.slow_log)

set globallog_output=』table』;

#慢查詢日誌僅輸出到文字中(即:slow_query_log_file指定的檔案)

setglobal log_output=』file』;

#慢查詢日誌同時輸出到文字和表中

可以看到,不管是表還是檔案,都具體記錄了:是那條語句導致慢查詢(sql_text),該慢查詢語句的查詢時間(query_time),鎖表時間(lock_time),以及掃瞄過的行數(rows_examined)等資訊

在mysql中有乙個變數專門記錄當前慢查詢語句的個數:

輸入命令:show global status like 『%slow%』;

二.設定慢查詢時間

# 設定慢查詢記錄查詢耗時多長的sql,這裡演示用100毫秒

set long_query_time = 0.1;

這個時候已經設定完成,可以進行測試: 

# 用sql試一下。這裡休眠500毫秒

select sleep(0.5)

最終會在你的slow_query_log_file對應的檔案中檢視記錄下的慢查詢sql

三.通用查詢日誌

在學習通用日誌查詢時,需要知道兩個資料庫中的常用命令:

1) show variables like 『%general%』;

可以檢視,當前的通用日誌查詢是否開啟,如果general_log的值為on則為開啟,為off則為關閉(預設情況下是關閉的)。

2) show variables like 『%log_output%』;

檢視當前慢查詢日誌輸出的格式,可以是file(儲存在數資料庫的資料檔案中的hostname.log),也可以是table(儲存在資料庫中的mysql.general_log)

問題:如何開啟mysql通用查詢日誌,以及如何設定要輸出的通用日誌輸出格式呢?

開啟通用日誌查詢: set global general_log=on;

關閉通用日誌查詢: set global general_log=off;

設定通用日誌輸出為表方式: set global log_output=』table』;

設定通用日誌輸出為檔案方式: set global log_output=』file』;

設定通用日誌輸出為表和檔案方式:set global log_output=』file,table』;

(注意:上述命令只對當前生效,當mysql重啟失效,如果要永久生效,需要配置 my.cnf)

my.cnf檔案的配置如下:

general_log=1  #為1表示開啟通用日誌查詢,值為0表示關閉通用日誌查詢

log_output=file,table#設定通用日誌的輸出格式為檔案和表

mysql之慢查詢日誌

一 mysql的慢查詢日誌是mysql提供的用來記錄響應時間超過閾值的語句,預設情況下mysql沒有開啟慢查詢日誌,需要手動開啟,開啟慢查詢日誌對資料庫效能會有一點影響,所以在不調優的情況下不建議開啟慢查詢日誌功能 1 檢視是否開啟慢查詢日誌的命令 show variables like slow ...

MySQL之慢查詢日誌

預設情況下,mysql 資料庫沒有開啟慢查詢日誌,需要我們手動來設定這個引數 如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌會將sql語句寫入日誌,因此或多或少帶來一定的效能影響。sql語句 說明show variables like slow query log 檢視慢查詢日誌是否...

MySQL之慢查詢日誌

慢日誌查詢 概述 在生產環境中,如果要手工分析日誌 查詢 分析sql,顯然是個體力活,mysql提供了日誌分析工具mysqlldumpslow 是什麼?mysql之慢查詢日誌 怎麼玩?mysql之慢查詢日誌 檢視命令 show variables like slow query log show v...