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