您好,登錄后才能下訂單哦!
本篇內容介紹了“mysql中慢查詢日志的相關參數”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
一、 相關參數:
? slow_query_log
? 是否開啟慢查詢日志
? slow_query_log_file
? 慢查詢日志文件名, 在 my.cnf 我們已經定義為slow.log,默認是 機器名 -slow.log
? long_query_time
? 制定慢查詢閾值, 單位是秒,且當版本 >=5.5.X ,支持毫秒。例如 0.5 即為 500ms
? 大于 該值,不包括值本身。例如該值為2,則執行時間正好 等于 2的SQL語句 不會記錄
? log_queries_not_using_indexes
? 將沒有使索引的SQL記錄到慢查詢日志
? 如果一開始因為數據少,查表快,耗時的SQL語句沒被記錄,當數據量大時,該SQL可能會執行很長時間
? 需要測試階段就要發現問題,減小上線后出現問題的桜率
? log_throttle_queries_not_using_indexes
? 限制每分鐘內,在慢查詢日志中,去記錄沒有使用索引的SQL語句的次數;版本需要 >=5.6.X
? 因為沒有使用索引的SQL可能會短時間重復執行,為了避免日志快速增大,限制每分鐘的記錄次數
? min_examined_row_limit
? 掃描記錄少于改值的SQL不記錄到慢查詢日志
? 結合去記錄沒有使用索引的SQL語句的例子,有可能存在某一個表,數據量維持在幾行左右,且沒有建立索引。這種表即使不建立索引,查詢也很快,掃描記錄很小,如果確定有這種表,則可以通過此參數設置,將這個SQL不記錄到慢查詢日志。
? log_slow_admin_statements
? 記錄超時的管理操作SQL到慢查詢日志,比如ALTER/ANALYZE TABLE
? log_output
? 慢查詢日志的栺式,[FILE | TABLE | NONE],默認是FILE;版本 >=5.5
? 如果設置為TABLE,則記錄的到 mysql.slow_log
? log_slow_slave_statements
? 在從服務器上開啟慢查詢日志
? log_timestamps 5.7
? 寫入時區信息。可根據需求記錄UTC時間或者服務器本地系統時間
二、mysqldumpslow工具使用
如果在線上操作,不需要 mysqldumpslow 去掃整個 slow.log , 可以去 tail -n 10000 slow.log > last_10000_slow.log (10000 這個數字根據實際情況進行調整 ),然后進行 mysqldumpslow last_10000_slow.log
三、慢查詢日志存入表
-- 在my.cnf 中增加 log_output = TABLE,打開slow_query_log選項,然后重啟數據庫實例
--
mysql> show variables like "log_output%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | TABLE |
+---------------+-------+
1 row in set (0.00 sec)
mysql> show variables like "slow_query_log";
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | ON |
+----------------+-------+
1 row in set (0.00 sec)
mysql> select * from mysql.slow_log;
+----------------------------+---------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+-----------------+-----------+
| start_time | user_host | query_time | lock_time | rows_sent | rows_examined | db | last_insert_id | insert_id | server_id | sql_text | thread_id |
+----------------------------+---------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+-----------------+-----------+
| 2015-11-20 19:50:28.574677 | root[root] @ localhost [] | 00:00:04.000306 | 00:00:00.000000 | 1 | 0 | | 0 | 0 | 11 | select sleep(4) | 3 |
+----------------------------+---------------------------+-----------------+-----------------+-----------+---------------+----+----------------+-----------+-----------+-----------------+-----------+
1 row in set (0.00 sec)
mysql> show create table mysql.slow_log;
--
-- 表結構輸出省略
-- 關鍵一句如下:
--
ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log' -- ENGINE=CSV 這里使用的是CSV的引擎,性能較差
-- 建議將slow_log表的存儲引擎改成MyISAM
mysql> alter table mysql.slow_log engine = myisam;
ERROR 1580 (HY000): You cannot 'ALTER' a log table if logging is enabled '-- 提示我正在記錄日志中,不能轉換
mysql> set global slow_query_log = 0; -- 先停止記錄日志
Query OK, 0 rows affected (0.01 sec)
mysql> alter table mysql.slow_log engine = myisam; -- 然后轉換表的引擎
Query OK, 2 rows affected (5.05 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> set global slow_query_log = 1; -- 再開啟記錄日志
Query OK, 0 rows affected (0.00 sec)
mysql> show create table mysql.slow_log;
--
-- 表結構輸出省略
-- 關鍵一句如下:
--
ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Slow log' -- ENGINE 變成了MyISAM
使用 TABLE 的優勢在于方便查詢,但是記住當在備份的時候,不要備份慢查詢日志的表,避免備份過大。
使用 FILE 也可以,需要定時清除該文件,避免單文件過大。
“mysql中慢查詢日志的相關參數”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。