共計(jì) 2054 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。
這篇文章主要介紹了 MySQL 慢查詢?nèi)罩驹趺丛O(shè)置的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇 MySQL 慢查詢?nèi)罩驹趺丛O(shè)置文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。
一、概述
MySQL 的慢查詢?nèi)罩臼?MySQL 提供的一種日志記錄,它用來(lái)記錄在 MySQL 中響應(yīng)時(shí)間超過(guò)閥值 (long_query_time,單位:秒) 的 SQL 語(yǔ)句。默認(rèn)情況下,MySQL 不啟動(dòng)慢查詢?nèi)罩尽1疚暮?jiǎn)單介紹如何開(kāi)啟慢查詢?nèi)罩荆绾斡?mysqldumpslow
分析慢查詢。
二、慢查詢?nèi)罩驹O(shè)置 1、臨時(shí)設(shè)置
臨時(shí)開(kāi)啟慢查詢?nèi)罩?重啟失效)
set global slow_query_log = on;
注:如果想關(guān)閉慢查詢?nèi)罩荆恍枰獔?zhí)行 set global slow_query_log = off; 即可。
臨時(shí)慢查詢時(shí)間臨界點(diǎn) 查詢時(shí)間高于這個(gè)臨界點(diǎn)的都會(huì)被記錄到慢查詢?nèi)罩局?重啟失效)
set long_query_time = 1;
設(shè)置慢查詢存儲(chǔ)的方式(重啟失效)
set global log_output = file;
說(shuō)明: 可以看到, 我這里設(shè)置為了 file, 就是說(shuō)我的慢查詢?nèi)罩臼峭ㄟ^(guò) file 體現(xiàn)的, 默認(rèn)是 none, 我們可以設(shè)置為 table 或者 file, 如果是 table 則慢查詢信息會(huì)保存到 mysql 庫(kù)下的 slow_log 表中。
2、查詢慢查詢?nèi)罩镜拈_(kāi)啟狀態(tài)和慢查詢?nèi)罩緝?chǔ)存的位置
show variables like %quer%
參數(shù)說(shuō)明:
slow_query_log : 是否已經(jīng)開(kāi)啟慢查詢
slow_query_log_file : 慢查詢?nèi)罩疚募窂?/p>
long_query_time : 超過(guò)多少秒的查詢就寫入日志
log_queries_not_using_indexes 如果值設(shè)置為 ON,則會(huì)記錄所有沒(méi)有利用索引的查詢(性能優(yōu)化時(shí)開(kāi)啟此項(xiàng), 平時(shí)不要開(kāi)啟)
3、查看存放日志的形式
show variables like log_output
4、永久開(kāi)啟慢日志
修改 my.cnf
在配置文件 my.cnf(一般為 /etc/my.cnf)中的[mysqld] section 增加如下參數(shù)。
[mysqld]slow_query_log= 1slow_query_log_file= /var/lib/mysql/slow-query.log # 若沒(méi)有指定,默認(rèn)名字為 hostname_slow.loglong_query_time= 1log_queries_not_using_indexes= 1
其中,slow_query_log = 1,表示開(kāi)啟慢查詢,0 表示關(guān)閉
slow_query_log_file,指定慢查詢?nèi)罩韭窂剑枰?MySQL 對(duì)該路徑有寫權(quán)限
long_query_time = 1,表示查詢時(shí)間 = 1 秒才記錄日志,默認(rèn) 10s
log_queries_not_using_indexes = 1,表明記錄沒(méi)有使用索引的 SQL 語(yǔ)句
重啟 MySQL 服務(wù),重啟 MySQL 后會(huì)看到 /var/lib/mysql/slow-query.log 文件。
三、慢查詢測(cè)試
制造慢查詢并執(zhí)行。如下:
mysql select sleep(1);+----------+
| sleep(1) |
+----------+
| 0 |
+----------+
1 row in set (1.00 sec)
慢查詢?nèi)罩?/p>
打開(kāi)慢查詢?nèi)罩疚募?梢钥吹缴鲜雎樵兊?SQL 語(yǔ)句被記錄到日志中。
四、慢查詢分析工具
mysqldumpslow
mysqldumpslow
是 MySQL 自帶的分析慢查詢的工具。該工具是 Perl 腳本。
常用參數(shù)如下:
-s:排序方式,值如下
c:查詢次數(shù)
t:查詢時(shí)間
l:鎖定時(shí)間
r:返回記錄
ac:平均查詢次數(shù)
al:平均鎖定時(shí)間
ar:平均返回記錄書(shū)
at:平均查詢時(shí)間
-t:topN 查詢
-g:正則表達(dá)式
獲取訪問(wèn)次數(shù)最多的 5 個(gè) SQL 語(yǔ)句:
按照時(shí)間排的 top 5 個(gè) SQL 語(yǔ)句
$ mysqldumpslow
-s t -t 5 /var/lib/mysql/slow-query.log
按照時(shí)間排序且含有 like 的 top 5 個(gè) SQL 語(yǔ)句
$ mysqldumpslow
-s t -t 3 -g like /var/lib/mysql/slow-query.log
五、MySQL 清理 slowlog 方法
SET GLOBAL slow_query_log = OFF
ALTER TABLEmysql.slow_log RENAME mysql.slow_log_drop;
CREATE TABLE mysql.slow_log LIKEmysql.slow_log_drop;
SET GLOBAL slow_query_log = ON
DROP TABLE mysql.slow_log_drop;
關(guān)于“MySQL 慢查詢?nèi)罩驹趺丛O(shè)置”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“MySQL 慢查詢?nèi)罩驹趺丛O(shè)置”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。