萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql中slow query log慢日志查詢分析

mysql中slow query log慢日志查詢分析

在mysql中slow query log是一個非常重要的功能,我們可以開啟mysql的slow query log功能,這樣就可以分析每條sql執行的狀態與性能從而進行優化了。

一、慢查詢日志 配置

開啟慢查詢日志 , 配置樣例:

/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]#

copyright © 萬盛學電腦網 all rights reserved