中如何啟用并分析慢查詢(xún)日志,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細講解,有這方面需求的人可以來(lái)學(xué)習下,希望你能有所收獲。
Mysql有一項功能可以記錄長(cháng)時(shí)間查詢(xún)的慢記錄,具體是多長(cháng)時(shí)間可以自己配置,但是慢查詢(xún)也未必就是不良的SQL,也可能受其他查詢(xún)影響,或者是系統資源限制導致的,它也是我們常用的性能分析工具?!鞠嚓P(guān)推薦:mysql視頻教程】
MySQL的慢查詢(xún)日志由long_query_time
和min_examined_row_limit
控制的,前者意思是如果查詢(xún)花費的時(shí)間超過(guò)這么多秒,MySQL就是在啟用慢查詢(xún)日志的情況下,將這條記錄到慢查詢(xún)日志文件中。
要在 MySQL 中啟用慢查詢(xún)日志,請按照下列步驟操作:
首先看看MySQL中關(guān)于慢查詢(xún)的狀態(tài)。
MariaDB [(none)]> show variables like '%slow%'; +------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ | Variable_name | Value | +------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ | log_slow_admin_statements | ON | | log_slow_disabled_statements | sp | | log_slow_filter | admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk | | log_slow_rate_limit | 1 | | log_slow_slave_statements | ON | | log_slow_verbosity | | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | hxl-slow.log | +------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ 9 rows in set (0.001 sec)
首先看slow_query_log
的狀態(tài),他代表慢查詢(xún)日志是否開(kāi)啟。該值可以是0或OFF表示禁用,1或ON表示啟用。日志輸出的目的地由log_output
系統變量控制,如果該值為NONE
,則即使啟用了慢查詢(xún)日志,也不會(huì )寫(xiě)入到日志中,log_output
變量的取值如下:
TABLE: (默認)向mysql.general_log
表寫(xiě)入一般查詢(xún),向表mysql.slow_log
寫(xiě)入慢速查詢(xún) 。
FILE:將一般和慢速查詢(xún)日志寫(xiě)入文件系統。
NONE – 禁用日志記錄。
還有general_log_file
與slow_query_log_file
變量代表查詢(xún)日志和慢查詢(xún)日志文件的名稱(chēng)??梢栽?a href='http://wap.friendlycc.com.cn/serverlease/' target='_blank'>服務(wù)器啟動(dòng)或運行時(shí)設置這些變量。
啟動(dòng)慢查詢(xún)日志
MySQL中默認關(guān)閉了慢查詢(xún)日志功能,因此要打開(kāi)此功能,我們需要將slow_query_log
設置為ON,如下所示。
SET GLOBAL slow_query_log = 1;
設置記錄時(shí)長(cháng)
long_query_time
變量表示只有運行時(shí)間超過(guò)此值就會(huì )被記錄,如下所示,更改時(shí)間為5秒,他默認為10秒,最小值為 0。
SET GLOBAL long_query_time = 5;
修改輸出位置
默認情況下,慢查詢(xún)日志文件位于 /var/lib/mysql/hostname-slow.log
,我們還可以使用slow_query_log_file
變量設置另一個(gè)位置。
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
將慢查詢(xún)日志寫(xiě)入表
慢查詢(xún)日志也可以被寫(xiě)入slow_log
表中,方式就是上述中所說(shuō)修改log_output
系統變量為TABLE
,操作如下:
SET GLOBAL log_output='TABLE';
慢查詢(xún)日志相關(guān)的變量
slow_query_log - 啟用/禁用慢查詢(xún)日志
log_output - 如何寫(xiě)入輸出
slow_query_log_file - 慢查詢(xún)日志文件的名稱(chēng)
long_query_time - 定義慢查詢(xún)的時(shí)間(以秒/微秒為單位)
log_queries_not_using_indexes - 是否記錄不使用索引的查詢(xún)
log_slow_admin_statements - 是否記錄某些管理語(yǔ)句
log_slow_disabled_statements - 不應記錄在慢查詢(xún)日志中的語(yǔ)句類(lèi)型
min_examined_row_limit - 查詢(xún)必須檢查的最小行數才能變慢
log_slow_rate_limit - 允許記錄一部分慢查詢(xún)
log_slow_verbosity - 日志中的詳細信息量
log_slow_filter - 限制要記錄的查詢(xún)
日志記錄后,我們還需要分析這些日志,找出影響系統的查詢(xún),MySQL提供了一個(gè)名為mysqldumpslow的工具,可以簡(jiǎn)單的顯示結果,只需要把日志路徑傳遞給他即可,如下:
# mysqldumpslow -a mysql-slow.log Reading mysql slow query log from mysql-slow.log Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows_sent=21.0 (21), Rows_examined=21.0 (21), Rows_affected=0.0 (0), root[root]@localhost show databases Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows_sent=2.0 (2), Rows_examined=2.0 (2), Rows_affected=0.0 (0), root[root]@localhost select * from users Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost select @@version_comment limit 1 Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost
他的參數如下
-s ,按照什么方式起來(lái)排序。默認at,也就是按照平均查詢(xún)時(shí)間來(lái)排序。都是按照倒序排列。
al: average lock time 平均鎖定時(shí)間
ar: average rows sent 平均返回行數
at: average query time 平均查詢(xún)時(shí)間
c: count 總執行次數
l: lock time 總鎖定時(shí)間
r: rows sent 總返回行數
t: query time 總查詢(xún)時(shí)間
-t ,show the top n queries,顯示前多少名的記錄
-a ,默認不開(kāi)啟這個(gè)選項。mysqldumpslow將相似的SQL的值(字符串或者數字)替換為N,開(kāi)啟該選項,則顯示真實(shí)值。不開(kāi)啟該選項,有點(diǎn)類(lèi)似于Oracle的綁定變量的記錄。\
-g ,類(lèi)似于grep命令,過(guò)濾出需要的信息。如,只查詢(xún)A表的慢查詢(xún)記錄。\
-l ,總時(shí)間中包含鎖定時(shí)間
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站