mysql-普通查詢(General Query)慢查詢(Slow Query)相關日誌配置

配置

配置方法一: 服務啓動時

# vi /etc/my.cnf
...
log-output=TABLE,FILE
general-log=1
slow-query-log=1

# systemctl restart mysqld

log-output默認是FILE,還有個值是NONE,就不輸出日誌了.我這裏演示的是表和日誌文件都輸出.mysql

配置方法二: 運行時

mysql> set global log_output="table", global general_log=on, global slow_query_log=on;

查看

查看相關變量:sql

mysql> show variables like 'general%';
+------------------+--------------------------+
| Variable_name    | Value                    |
+------------------+--------------------------+
| general_log      | ON                       |
| general_log_file | /var/lib/mysql/srv00.log |
+------------------+--------------------------+
2 rows in set (0.00 sec)

mysql> show variables like 'slow%';
+---------------------+-------------------------------+
| Variable_name       | Value                         |
+---------------------+-------------------------------+
| slow_launch_time    | 2                             |
| slow_query_log      | ON                            |
| slow_query_log_file | /var/lib/mysql/srv00-slow.log |
+---------------------+-------------------------------+
3 rows in set (0.00 sec)

相關日誌文件:服務器

general_log_fileslow_query_log_file變量指示的文件,能夠按須要進行修改oracle

日誌相關的表:工具

mysql> select * from mysql.general_log;
mysql> select * from mysql.slow_log;

維護

日誌文件rest

mysql> set global general_log=off;
mysql> \! mv /var/lib/mysql/srv00.log /var/lib/mysql/srv00.log.bak
mysql> set global general_log=on;

或者:日誌

mv /var/lib/mysql/srv00.log /var/lib/mysql/srv00.log.bak
mv /var/lib/mysql/srv00-slow.log /var/lib/mysql/srv00-slow.log.bak
mysqladmin flush-logs

修改日誌表原理也是同樣,先暫停,維護表,再啓用code

slow query log相關參數

mysql> show variables like 'long%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)

超過這個秒數的慢查詢才記錄索引

mysql> show variables like 'min%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| min_examined_row_limit | 0     |
+------------------------+-------+
1 row in set (0.00 sec)

返回記錄數超過才記錄資源

mysql> show variables like 'log_slow_admin%';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| log_slow_admin_statements | OFF   |
+---------------------------+-------+
1 row in set (0.00 sec)

是否記錄管理類型的sql, 包括:ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, REPAIR TABLE.

mysql> show variables like '%not_using_indexes';
+----------------------------------------+-------+
| Variable_name                          | Value |
+----------------------------------------+-------+
| log_queries_not_using_indexes          | OFF   |
| log_throttle_queries_not_using_indexes | 0     |
+----------------------------------------+-------+
2 rows in set (0.01 sec)

沒有使用索引的sql是否要記錄,若是開啓會產生不少記錄,log_throttle_queries_not_using_indexes設置每分鐘在此範圍內只記錄一次.

slow query log 分析

使用工具mysqldumpslow

熟悉oracle的能夠認爲mysqldumpslow是oracle的tkprof

總結

固然開啓都會對服務器資源消耗.只在須要的時候開啓,不用的時候關掉.

//END

相關文章
相關標籤/搜索