慢查詢日誌的管理

dbhelper發表於2014-12-04

前言:慢查詢日誌是mysql的另一個調優的入口,透過定義效率慢的sql語句,然後mysql根據這個定義記錄在相應的日誌裡面,所以就叫慢查詢日誌;

 

引數概況:

檢查引數的檢視:SHOW VARIABLES LIKE 'slow_query_log';

mysql> SHOW VARIABLES LIKE 'slow_query_log';

+----------------+-------+

| Variable_name  | Value |

+----------------+-------+

| slow_query_log | ON   |

+----------------+-------+

1 row in set (0.00 sec)

 

當引數值為ON為開啟,引數值為OFF為關閉;

 

相關引數:

可以在/etc/my.cnf檔案中修改或透過set命令來操作,詳細的操作可以檢視已發的文件『深入理解mysql引數』

1、慢查詢日誌的開關:SET GLOBAL slow_query_log=ON/OFF,透過設定ON/OFF來進行開關;

2、慢查詢日誌的位置:slow_query_log_file=/data/mysql,檔案路徑

3、指定多少秒未返回結果的語句屬於慢查詢:long_query_time=10,超過10s鍾

4、記錄所有沒有使用到索引的查詢語句:long-queries-not-using-indexes

5、記錄那些由於查詢了多於1000次而引發的慢查詢:min_examined_row_limit=1000

6、記錄那些慢的OPTIMIZE TABLE\ANALYZE TABLE\ALTER TABLE語句:log_slow_admin-statements

7、記錄有slave所產生的慢查詢:log-slow-slave-statements

 

引數檢視:

mysql> SHOW VARIABLES LIKE 'slow_query_log';

+----------------+-------+

| Variable_name | Value |

+----------------+-------+

| slow_query_log | ON | /當前系統的慢查詢開啟狀態/ +----------------+-------+ 1 row in set (0.01 sec)

 

mysql> SHOW VARIABLES LIKE 'slow_query_log_file';

+---------------------+----------------------------+

| Variable_name | Value |

+---------------------+----------------------------+

| slow_query_log_file | /data/mysql/mysql-slow.log | /慢查詢日誌的位置/

+---------------------+----------------------------+

1 row in set (0.00 sec)

 

 

mysql> SHOW VARIABLES LIKE 'long_query_time';

+-----------------+-----------+ |

Variable_name | Value |

+-----------------+-----------+ |

long_query_time | 10.000000 | /獲取超過10S的SQL語句/

+-----------------+-----------+

1 row in set (0.00 sec)

 

例子:select sleep(15);

mysql> select sleep(14);

+-----------+

| sleep(14) |

+-----------+

| 0 |

+-----------+

1 row in set (14.00 sec)

 

mysql> quit

-bash-4.1# cat /data/mysql/slow-log

/usr/local/mysql/bin/mysqld, Version: 5.5.36-log (Source distribution). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time Id Command Argument

# Time: 140904 17:39:36

# User@Host: root[root] @ localhost []

# Query_time: 14.000705 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

SET timestamp=1409823576;

select sleep(14); ---這就是抓取的慢查詢日誌

 

總結:在實際的生產系統中,慢查詢日誌一般是不啟用的;

如果需要的話一般都開啟一段時間跟蹤系統中的緩慢語句;

生產系統中該日誌也會不斷的增長,可以透過作業系統命令進行刪除;

當慢查詢日誌很大的情況下,可以透過工具進行分析,分析的工具有Mysqldumpslow、mysqlsla等

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN 某上市公司DBA

資料庫技術群:367875324 (該群有諸多公司的IT負責人,加入請備註資料庫管理 )

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1356140/,如需轉載,請註明出處,否則將追究法律責任。

相關文章