詳解MySQL慢日誌(下)選項引數篇
詳解MySQL慢日誌(上)query_time\start_time\lock_time 的坑
http://blog.itpub.net/29773961/viewspace-2147315/
〇 log_output
列舉型,動態引數。
用於設定slow log和general log的輸出物件。
可以設定為none,table,file,分別代表:不輸出,存於表,存於檔案。
並且也可以組合設定:
比如SET GLOBAL log_output='table,file';
則代表同時輸出到表和檔案中。
如果設定SET GLOBAL log_output='none,file' 或 'none,table' 或 'table,file,none' 均代表'none'
〇 slow_query_log與slow_query_log_file
slow_query_log 布林型,動態引數,預設為OFF。
用於控制是否開啟slow log。
slow_query_log_file 動態引數,指定slow log檔案的名稱和路徑。
若未設定,則slow log的檔名取預設值$host_name-slow.log,存放於$datadir下。
〇 long_query_time
動態引數,預設值為10。
記錄執行時間(real time)超過該值以上的SQL。
〇 log_queries_not_using_indexes
布林型,動態引數,預設為OFF。
若開啟,則表示記錄所有未使用索引的SQL,無論是否超過long_query_time所設定的值。
不遵循long_query_time。
此時上面這一條SQL被記錄到slow log,並且忽略了long_query_time的設定。
加一個索引,再多一次查詢:
可以發現第二次SELECT的SQL的沒有被記錄到slow log。
至於這條查詢slow log的語句本身被記錄到slow log,也是因為這條查mysql.slow_log的SQL沒有使用到索引。
因為開啟該引數造成slow log暴漲的案例:
http://blog.itpub.net/29773961/viewspace-1811829/
〇 log_throttle_queries_not_using_indexes
整型,動態引數,預設為0。
如果log_queries_not_using_indexes開啟,
那麼log_throttle_queries_not_using_indexes用於限制每分鐘所記錄的slow log數量。
設定為0則表示“不限制”。
〇 log_slow_admin_statements
布林型,動態引數,預設為OFF。5.7後新增的引數。
可用於控制slow log是否記錄資料庫管理的SQL。
若開啟,則表示記錄這些SQL。
資料庫管理的SQL包括:
ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, REPAIR TABLE。
第一次執行check table,時間超過2秒,但未被記錄。
第二次執行check table,開啟log_queries_not_using_indexes,超過2秒,被記錄。
〇 log_slow_slave_statements
布林型,動態引數,預設為OFF。5.7後新增的引數。
開啟後,在slave上將會記錄超過long_query_time的日誌記錄。
即便開啟了這個選項,也不會立刻生效,新的變更需要再一次START SLAVE後生效。
〇 min_examined_row_limit
整型,動態引數,預設為0。
設定該值,則表示返回行數大於等於該值的sql,將會被記錄到slow log中。
個人認為大多數場景都無需刻意設定該值,取預設為0就好。
〇 log-short-format
預設為FLASE,該選項僅僅為啟動時選項,並不支援系統變數。
如果該選項被啟用,則表示在slow log中記錄更少的資訊。
〇 log_timestamps
列舉型,動態,預設為UTC,5.7.2後出現。
這個引數是用於控制記錄在error log、general log、slow log中,對應日期時區的選項。
更多可參考:
http://blog.itpub.net/29773961/viewspace-2146053/
〇 參考文件:
MySQL 5.7 Reference Manual - 5.1.3 Server Option and Variable Reference
作者微信公眾號(持續更新)
〇 log_output
列舉型,動態引數。
用於設定slow log和general log的輸出物件。
可以設定為none,table,file,分別代表:不輸出,存於表,存於檔案。
並且也可以組合設定:
比如SET GLOBAL log_output='table,file';
則代表同時輸出到表和檔案中。
如果設定SET GLOBAL log_output='none,file' 或 'none,table' 或 'table,file,none' 均代表'none'
〇 slow_query_log與slow_query_log_file
slow_query_log 布林型,動態引數,預設為OFF。
用於控制是否開啟slow log。
slow_query_log_file 動態引數,指定slow log檔案的名稱和路徑。
若未設定,則slow log的檔名取預設值$host_name-slow.log,存放於$datadir下。
〇 long_query_time
動態引數,預設值為10。
記錄執行時間(real time)超過該值以上的SQL。
〇 log_queries_not_using_indexes
布林型,動態引數,預設為OFF。
若開啟,則表示記錄所有未使用索引的SQL,無論是否超過long_query_time所設定的值。
不遵循long_query_time。
-
mysql> SET SESSION long_query_time=10000;
-
Query OK, 0 rows affected (0.00 sec)
-
-
mysql> CREATE TABLE test.slow(id int);
-
Query OK, 0 rows affected (0.03 sec)
-
-
mysql> INSERT INTO test.slow SELECT 1;
-
Query OK, 1 row affected (0.01 sec)
-
Records: 1 Duplicates: 0 Warnings: 0
-
-
mysql> SELECT * FROM test.slow WHERE id=1;
-
+------+
-
| id |
-
+------+
-
| 1 |
-
+------+
-
1 row in set (0.00 sec)
-
-
mysql> SELECT start_time, query_time,lock_time,sql_text FROM mysql.slow_log;
-
+----------------------------+-----------------+-----------------+------------------------------------+
-
| start_time | query_time | lock_time | sql_text |
-
+----------------------------+-----------------+-----------------+------------------------------------+
-
| 2017-11-16 15:09:32.114488 | 00:00:00.000346 | 00:00:00.000166 | SELECT * FROM test.slow WHERE id=1 |
-
+----------------------------+-----------------+-----------------+------------------------------------+
- 1 row in set (0.00 sec)
-
mysql> ALTER TABLE test.slow ADD PRIMARY KEY pk(id);
-
Query OK, 0 rows affected (0.14 sec)
-
Records: 0 Duplicates: 0 Warnings: 0
-
-
mysql> SELECT * FROM test.slow WHERE id=1;
-
+----+
-
| id |
-
+----+
-
| 1 |
-
+----+
-
1 row in set (0.00 sec)
-
-
mysql> SELECT start_time, query_time,lock_time,sql_text FROM mysql.slow_log;
-
+----------------------------+-----------------+-----------------+----------------------------------------------------------------------+
-
| start_time | query_time | lock_time | sql_text |
-
+----------------------------+-----------------+-----------------+----------------------------------------------------------------------+
-
| 2017-11-16 15:09:32.114488 | 00:00:00.000346 | 00:00:00.000166 | SELECT * FROM test.slow WHERE id=1 |
-
| 2017-11-16 15:10:50.196590 | 00:00:00.000437 | 00:00:00.000148 | SELECT start_time, query_time,lock_time,sql_text FROM mysql.slow_log |
-
+----------------------------+-----------------+-----------------+----------------------------------------------------------------------+
- 2 rows in set (0.00 sec)
至於這條查詢slow log的語句本身被記錄到slow log,也是因為這條查mysql.slow_log的SQL沒有使用到索引。
因為開啟該引數造成slow log暴漲的案例:
http://blog.itpub.net/29773961/viewspace-1811829/
〇 log_throttle_queries_not_using_indexes
整型,動態引數,預設為0。
如果log_queries_not_using_indexes開啟,
那麼log_throttle_queries_not_using_indexes用於限制每分鐘所記錄的slow log數量。
設定為0則表示“不限制”。
〇 log_slow_admin_statements
布林型,動態引數,預設為OFF。5.7後新增的引數。
可用於控制slow log是否記錄資料庫管理的SQL。
若開啟,則表示記錄這些SQL。
資料庫管理的SQL包括:
ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, REPAIR TABLE。
遵循long_query_time。
第一次執行check table,時間超過2秒,但未被記錄。
第二次執行check table,開啟log_queries_not_using_indexes,超過2秒,被記錄。
-
mysql> SELECT @@long_query_time, @@log_queries_not_using_indexes;
-
+-------------------+---------------------------------+
-
| @@long_query_time | @@log_queries_not_using_indexes |
-
+-------------------+---------------------------------+
-
| 2.000000 | 0 |
-
+-------------------+---------------------------------+
-
1 row in set (0.00 sec)
-
-
mysql> CHECK TABLE test.t0;
-
+---------+-------+----------+----------+
-
| Table | Op | Msg_type | Msg_text |
-
+---------+-------+----------+----------+
-
| test.t0 | check | status | OK |
-
+---------+-------+----------+----------+
-
1 row in set (4.28 sec)
-
-
mysql> SET GLOBAL log_slow_admin_statements = 1;
-
Query OK, 0 rows affected (0.00 sec)
-
-
mysql> CHECK TABLE test.t0;
-
+---------+-------+----------+----------+
-
| Table | Op | Msg_type | Msg_text |
-
+---------+-------+----------+----------+
-
| test.t0 | check | status | OK |
-
+---------+-------+----------+----------+
-
1 row in set (4.27 sec)
-
-
mysql> SELECT start_time, query_time,lock_time,sql_text FROM mysql.slow_log;
-
+----------------------------+-----------------+-----------------+---------------------+
-
| start_time | query_time | lock_time | sql_text |
-
+----------------------------+-----------------+-----------------+---------------------+
-
| 2017-11-16 15:31:24.378343 | 00:00:04.271940 | 00:00:00.000134 | CHECK TABLE test.t0 |
-
+----------------------------+-----------------+-----------------+---------------------+
- 1 row in set (0.00 sec)
〇 log_slow_slave_statements
布林型,動態引數,預設為OFF。5.7後新增的引數。
開啟後,在slave上將會記錄超過long_query_time的日誌記錄。
即便開啟了這個選項,也不會立刻生效,新的變更需要再一次START SLAVE後生效。
〇 min_examined_row_limit
整型,動態引數,預設為0。
設定該值,則表示返回行數大於等於該值的sql,將會被記錄到slow log中。
-
mysql> SET SESSION long_query_time=0, SESSION min_examined_row_limit=5;
-
Query OK, 0 rows affected (0.00 sec)
-
-
mysql> SELECT * FROM test.t0 LIMIT 4;
-
…………
-
4 rows in set (0.00 sec)
-
-
mysql> SELECT * FROM test.t0 LIMIT 5;
-
…………
-
5 rows in set (0.00 sec)
-
-
mysql> SELECT * FROM test.t0 LIMIT 10;
-
…………
-
10 rows in set (0.00 sec)
-
-
mysql> SELECT start_time, query_time,lock_time,sql_text FROM mysql.slow_log;
-
+----------------------------+-----------------+-----------------+--------------------------------+
-
| start_time | query_time | lock_time | sql_text |
-
+----------------------------+-----------------+-----------------+--------------------------------+
-
| 2017-11-17 16:08:14.851394 | 00:00:00.000286 | 00:00:00.000134 | SELECT * FROM test.t0 LIMIT 5 |
-
| 2017-11-17 16:08:16.744389 | 00:00:00.000284 | 00:00:00.000135 | SELECT * FROM test.t0 LIMIT 10 |
-
+----------------------------+-----------------+-----------------+--------------------------------+
- 2 rows in set (0.00 sec)
預設為FLASE,該選項僅僅為啟動時選項,並不支援系統變數。
如果該選項被啟用,則表示在slow log中記錄更少的資訊。
〇 log_timestamps
列舉型,動態,預設為UTC,5.7.2後出現。
這個引數是用於控制記錄在error log、general log、slow log中,對應日期時區的選項。
更多可參考:
http://blog.itpub.net/29773961/viewspace-2146053/
〇 參考文件:
MySQL 5.7 Reference Manual - 5.1.3 Server Option and Variable Reference
作者微信公眾號(持續更新)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-2147352/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ELK構建MySQL慢日誌收集平臺詳解MySql
- 如何使用 MySQL 慢查詢日誌進行效能優化 - Profiling、mysqldumpslow 例項詳解MySql優化
- dg庫日誌應用慢引數調整
- MySQL:慢查詢日誌MySql
- mysql開啟慢日誌MySql
- MySQL慢日誌優化MySql優化
- mysql 鎖的慢日誌MySql
- MySQL慢日誌全解析MySql
- MySQL日誌引數配置簡介MySql
- MySQL系列:binlog日誌詳解(引數、操作、GTID、最佳化、故障演練)MySql
- mysql5.7 慢日誌配置MySql
- Mysql 慢日誌分析工具MysqldumpslowMySql
- mysql的日誌檔案詳解MySql
- mysql檢視binlog日誌詳解MySql
- mysql之 slow log 慢查詢日誌MySql
- MySQL Slow Query log(慢查詢日誌)MySql
- 2、MySQL錯誤日誌(Error Log)詳解MySqlError
- 關於MySQL 通用查詢日誌和慢查詢日誌分析MySql
- mysql二進位制日誌的引數介紹MySql
- mysql慢查詢和錯誤日誌分析MySql
- Mysql慢查詢日誌檔案轉ExcelMySqlExcel
- MySQL慢查詢日誌相關設定MySql
- MYSQL日誌的正確刪除方法詳解MySql
- MySQL提升筆記(3)日誌檔案詳解MySql筆記
- MySQL relay log 詳細引數解釋MySql
- 如何列印完整的MYSQL帶引數SQL日誌資訊MySql
- 對 MySQL 慢查詢日誌的簡單分析MySql
- 如何在MySQL中開啟慢查詢日誌?MySql
- 詳解MySQL--慢查詢MySql
- MySQL8.0新增配置引數詳解MySql
- JVM GC 日誌詳解JVMGC
- Nginx日誌配置詳解Nginx
- MySQL慢日誌功能分析及優化增強MySql優化
- 【趙渝強老師】MySQL的慢查詢日誌MySql
- pgbadger 慢日誌分析工具
- 《MySQL 進階篇》十九:事務日誌MySql
- [日誌分析篇]-利用ELK分析jumpserver日誌-日誌拆分篇Server
- Java日誌框架:logback詳解Java框架
- Kubernetes叢集日誌詳解