一、慢查詢日志 配置
開啟慢查詢日志 , 配置樣例:
/etc/mysql/my.cnf
[mysqld]
log-slow-queries
在 my.cnf 配置文件中增加上述配置項並重啟 mysql 服務,這時 mysql 慢查詢功能生效。慢查詢 日志將寫入參數 DATADIR (數據目錄:/var/lib/mysql)
指定的路徑下,默認文件名是 host_name-slow.log 。
和錯誤日志、查詢日志一樣,慢查詢日志記錄的格式也是純文本,可以被直接讀取。下例中演示了慢查詢日志的設置和讀取過程。
1 )首先查詢一下 long_query_time 的值 。
mysql> show variables like 'long%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| long_query_time | 10 |
+-----------------+-------+
1 row in set (0.00 sec)
( 2 )為了方便測試,將修改慢查詢時間為 5 秒。
mysql> set long_query_time=1;
Query OK, 0 rows affected (0.02 sec)
以上操作只限於當前有效,關閉服務器得重新設置。下面的方法可直接寫入my.cnf
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=1
二、mysqldumpslow 的常用參數如下:
-s 後面接下面的參數表示 mysqldumpslow 結果顯示的順序!
c query執行的次數
t sql執行的時間
l lock鎖表的時間
r sql返回的行數
ac,at,al,ar,表示倒序排列
-t,是top n,即為返回前面n條數據。
-g,後邊可以寫一個正則匹配模式,大小寫不敏感
顯示執行時間最長的前兩個
[root@rac3 python]# mysqldumpslow -s t -t 2 /opt/mysql/data/slowquery.log
Reading mysql slow query log from /opt/mysql/data/slowquery.log
Count: 2 Time=412.54s (825s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@localhost
select count(N) from sbtest ,t1 where t1.c=sbtest.c
Count: 1 Time=778.20s (778s) Lock=0.00s (0s) Rows=1.0 (1), root[root]@localhost
select count(N) from sbtest where sbtest.id not in ( select id from t1 )
#顯示次數最多的前兩個
[root@rac3 python]# mysqldumpslow -s c -t 2 /opt/mysql/data/slowquery.log
Reading mysql slow query log from /opt/mysql/data/slowquery.log
Count: 12 Time=0.00s (0s) Lock=0.00s (0s) Rows=1.0 (12), root[root]@localhost
select count(N) from tab_1
Count: 2 Time=412.54s (825s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@localhost
select count(N) from sbtest ,t1 where t1.c=sbtest.c
[root@rac3 python]#