mysql服務器有一項功能,可以檢測到哪條sql語句查詢得比較慢,就是慢查詢slowlog,現在介紹如何開啟。
在[mysqld]下面增加如下代碼:
long_query_time = 1
log-slow-queries = /usr/local/mysql/data/slow.log
log-queries-not-using-indexes
long_query_time = 1 #定義超過1秒的查詢計數到變量Slow_queries。
log-slow-queries = /usr/local/mysql/data/slow.log #定義慢查詢日志路徑。
log-queries-not-using-indexes #未使用索引的查詢也被記錄到慢查詢日志中(可選)。
mysql自帶了一個查看慢日志的工具mysqldumpslow。
執行mysqldumpslow –h可以查看幫助信息。
主要介紹兩個參數-s和-t
-s 這個是排序參數,可選的有:
al: 平均鎖定時間
ar: 平均返回記錄數
at: 平均查詢時間
c: 計數
l: 鎖定時間
r: 返回記錄
t: 查詢時間
-t n 顯示頭n條記錄。
MySQL慢查詢分析mysqldumpslow
/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log
這會輸出記錄次數最多的10條SQL語句,其中:
•-s, 是表示按照何種方式排序,c、t、l、r分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序,ac、at、al、ar,表示相應的倒敘;
•-t, 是top n的意思,即為返回前面多少條的數據;
•-g, 後邊可以寫一個正則匹配模式,大小寫不敏感的;
比如
/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log
得到返回記錄集最多的10個查詢。
/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
得到按照時間排序的前10條裡面含有左連接的查詢語句。
MySQL的慢查詢記錄/日志
Windows下開啟MySQL慢查詢
MySQL在Windows系統中的配置文件一般是是my.ini找到[mysqld]下面加上
log-slow-queries = F:MySQLlogmysqlslowquery.log
long_query_time = 2
Linux下啟用MySQL慢查詢
MySQL在Windows系統中的配置文件一般是是my.cnf找到[mysqld]下面加上
log-slow-queries=/data/mysqldata/slowquery.log
long_query_time=2
注意
log-slow-queries = F:MySQLlogmysqlslowquery.log為慢查詢日志存放的位置,一般這個目錄要有MySQL的運行帳號的可寫權限,一般都將這個目錄設置為MySQL的數據存放目錄;
long_query_time=2中的2表示查詢超過兩秒才記錄;
2009年09月24日更新
在my.cnf或者my.ini中添加log-queries-not-using-indexes參數,表示記錄下沒有使用索引的查詢。比如:
log-slow-queries=/data/mysqldata/slowquery.log
long_query_time=2
log-queries-not-using-indexes