MySQL慢查詢?nèi)罩镜淖饔煤烷_啟
MySQL的慢查詢?nèi)罩臼荕ySQL提供的一種日志記錄,它用來記錄在MySQL中響應(yīng)時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢?nèi)罩局?。long_query_time的默認值為10,意思是運行10S以上的語句。默認情況下,Mysql數(shù)據(jù)庫并不啟動慢查詢?nèi)罩?,需要我們手動來設(shè)置這個參數(shù),當然,如果不是調(diào)優(yōu)需要的話,一般不建議啟動該參數(shù),因為開啟慢查詢?nèi)罩緯蚨嗷蛏賻硪欢ǖ男阅苡绊?。慢查詢?nèi)罩局С謱⑷罩居涗泴懭胛募?,也支持將日志記錄寫入?shù)據(jù)庫表。
官方文檔,關(guān)于慢查詢的日志介紹如下(部分資料,具體參考官方相關(guān)鏈接):
The slow query log consists of SQL statements that took more than long_query_time seconds to execute and required at least min_examined_row_limit rows to be examined. The minimum and default values of long_query_time are 0 and 10, respectively. The value can be specified to a resolution of microseconds. For logging to a file, times are written including the microseconds part. For logging to tables, only integer times are written; the microseconds part is ignored.
By default, administrative statements are not logged, nor are queries that do not use indexes for lookups. This behavior can be changed usinglog_slow_admin_statements and log_queries_not_using_indexes, as described later.
慢查詢?nèi)罩鞠嚓P(guān)參數(shù)
MySQL 慢查詢的相關(guān)參數(shù)解釋:
- slow_query_log :是否開啟慢查詢?nèi)罩荆?表示開啟,0表示關(guān)閉。
- log-slow-queries :舊版(5.6以下版本)MySQL數(shù)據(jù)庫慢查詢?nèi)罩敬鎯β窂???梢圆辉O(shè)置該參數(shù),系統(tǒng)則會默認給一個缺省的文件host_name-slow.log
- slow-query-log-file:新版(5.6及以上版本)MySQL數(shù)據(jù)庫慢查詢?nèi)罩敬鎯β窂?。可以不設(shè)置該參數(shù),系統(tǒng)則會默認給一個缺省的文件host_name-slow.log
- long_query_time :慢查詢閾值,當查詢時間多于設(shè)定的閾值時,記錄日志。
- log_queries_not_using_indexes:未使用索引的查詢也被記錄到慢查詢?nèi)罩局校蛇x項)。
- log_output:日志存儲方式。log_output='FILE'表示將日志存入文件,默認值是'FILE'。log_output='TABLE'表示將日志存入數(shù)據(jù)庫,這樣日志信息就會被寫入到mysql.slow_log表中。MySQL數(shù)據(jù)庫支持同時兩種日志存儲方式,配置的時候以逗號隔開即可,如:log_output='FILE,TABLE'。日志記錄到系統(tǒng)的專用日志表中,要比記錄到文件耗費更多的系統(tǒng)資源,因此對于需要啟用慢查詢?nèi)罩?,又需要能夠獲得更高的系統(tǒng)性能,那么建議優(yōu)先記錄到文件。
慢查詢?nèi)罩镜淖饔?/h3>
慢查詢?nèi)罩緯巡樵兒臅r超過規(guī)定時間的SQL語句記錄下來,利用慢查詢?nèi)罩?,可以定位分析性能的瓶頸
查看慢查詢?nèi)罩竟δ苁欠耖_啟,以及慢查詢?nèi)罩疚募娣拍夸?/p>
SHOW VARIABLES LIKE 'slow_query%'
開啟慢查詢?nèi)罩?/h3>
- slow_query_log 可以設(shè)置慢查詢?nèi)罩镜拈_關(guān)狀態(tài)
- long_query_time 可以規(guī)定查詢超時的時間,單位是秒
在MySQL配置文件 /etc/my.cnf 中,設(shè)置
slow_query_log=ON long_query_time=1
開啟慢查詢?nèi)罩?,記錄查詢超過1秒的sql語句,重啟MySQL后生效。
可以使用下面sql測試以下
SELECT SLEEP(2);
慢查詢?nèi)罩居涗浳募?/p>
Tcp port: 0 Unix socket: (null) Time Id Command Argument # Time: 210125 6:30:14 # User@Host: reptile[reptile] @ [192.168.10.254] Id: 1 # Query_time: 2.000380 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 SET timestamp=1611556214; SELECT SLEEP(2);
- SET timestamp=1611556214; 執(zhí)行sql時間戳
- Query_time sql執(zhí)行時長
- Rows_sent 返回幾條記錄
總結(jié)
到此這篇關(guān)于MySQL慢查詢?nèi)罩镜淖饔煤烷_啟的文章就介紹到這了,更多相關(guān)MySQL慢查詢?nèi)罩緝?nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。