本篇內(nèi)容介紹了“MySQL中慢查詢?nèi)罩镜南嚓P(guān)參數(shù)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有烏蘭察布免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
一、 相關(guān)參數(shù):
? slow_query_log
? 是否開啟慢查詢?nèi)罩?/p>
? slow_query_log_file
? 慢查詢?nèi)罩疚募? 在 my.cnf 我們已經(jīng)定義為slow.log,默認(rèn)是 機(jī)器名 -slow.log
? long_query_time
? 制定慢查詢閾值, 單位是秒,且當(dāng)版本 >=5.5.X ,支持毫秒。例如 0.5 即為 500ms
? 大于 該值,不包括值本身。例如該值為2,則執(zhí)行時間正好 等于 2的SQL語句 不會記錄
? log_queries_not_using_indexes
? 將沒有使索引的SQL記錄到慢查詢?nèi)罩?br/> ? 如果一開始因為數(shù)據(jù)少,查表快,耗時的SQL語句沒被記錄,當(dāng)數(shù)據(jù)量大時,該SQL可能會執(zhí)行很長時間
? 需要測試階段就要發(fā)現(xiàn)問題,減小上線后出現(xiàn)問題的桜率
? log_throttle_queries_not_using_indexes
? 限制每分鐘內(nèi),在慢查詢?nèi)罩局?,去記錄沒有使用索引的SQL語句的次數(shù);版本需要 >=5.6.X
? 因為沒有使用索引的SQL可能會短時間重復(fù)執(zhí)行,為了避免日志快速增大,限制每分鐘的記錄次數(shù)
? min_examined_row_limit
? 掃描記錄少于改值的SQL不記錄到慢查詢?nèi)罩?br/> ? 結(jié)合去記錄沒有使用索引的SQL語句的例子,有可能存在某一個表,數(shù)據(jù)量維持在幾行左右,且沒有建立索引。這種表即使不建立索引,查詢也很快,掃描記錄很小,如果確定有這種表,則可以通過此參數(shù)設(shè)置,將這個SQL不記錄到慢查詢?nèi)罩尽?/p>
? log_slow_admin_statements
? 記錄超時的管理操作SQL到慢查詢?nèi)罩荆热鏏LTER/ANALYZE TABLE
? log_output
? 慢查詢?nèi)罩镜臇袷?,[FILE | TABLE | NONE],默認(rèn)是FILE;版本 >=5.5
? 如果設(shè)置為TABLE,則記錄的到 mysql.slow_log
? log_slow_slave_statements
? 在從服務(wù)器上開啟慢查詢?nèi)罩?/p>
? log_timestamps 5.7
? 寫入時區(qū)信息。可根據(jù)需求記錄UTC時間或者服務(wù)器本地系統(tǒng)時間
二、mysqldumpslow工具使用
如果在線上操作,不需要 mysqldumpslow 去掃整個 slow.log , 可以去 tail -n 10000 slow.log > last_10000_slow.log (10000 這個數(shù)字根據(jù)實際情況進(jìn)行調(diào)整 ),然后進(jìn)行 mysqldumpslow last_10000_slow.log
三、慢查詢?nèi)罩敬嫒氡?/p>
-- 在my.cnf 中增加 log_output = TABLE,打開slow_query_log選項,然后重啟數(shù)據(jù)庫實例
--
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;
--
-- 表結(jié)構(gòu)輸出省略
-- 關(guān)鍵一句如下:
--
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 '-- 提示我正在記錄日志中,不能轉(zhuǎn)換
mysql> set global slow_query_log = 0; -- 先停止記錄日志
Query OK, 0 rows affected (0.01 sec)
mysql> alter table mysql.slow_log engine = myisam; -- 然后轉(zhuǎn)換表的引擎
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;
--
-- 表結(jié)構(gòu)輸出省略
-- 關(guān)鍵一句如下:
--
ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Slow log' -- ENGINE 變成了MyISAM
使用 TABLE 的優(yōu)勢在于方便查詢,但是記住當(dāng)在備份的時候,不要備份慢查詢?nèi)罩镜谋?,避免備份過大。
使用 FILE 也可以,需要定時清除該文件,避免單文件過大。
“mysql中慢查詢?nèi)罩镜南嚓P(guān)參數(shù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!