您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“mysql中慢查詢?nèi)罩镜南嚓P(guān)參數(shù)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
一、 相關(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í)行時(shí)間正好 等于 2的SQL語(yǔ)句 不會(huì)記錄
? log_queries_not_using_indexes
? 將沒有使索引的SQL記錄到慢查詢?nèi)罩?br/> ? 如果一開始因?yàn)閿?shù)據(jù)少,查表快,耗時(shí)的SQL語(yǔ)句沒被記錄,當(dāng)數(shù)據(jù)量大時(shí),該SQL可能會(huì)執(zhí)行很長(zhǎng)時(shí)間
? 需要測(cè)試階段就要發(fā)現(xiàn)問題,減小上線后出現(xiàn)問題的桜率
? log_throttle_queries_not_using_indexes
? 限制每分鐘內(nèi),在慢查詢?nèi)罩局?,去記錄沒有使用索引的SQL語(yǔ)句的次數(shù);版本需要 >=5.6.X
? 因?yàn)闆]有使用索引的SQL可能會(huì)短時(shí)間重復(fù)執(zhí)行,為了避免日志快速增大,限制每分鐘的記錄次數(shù)
? min_examined_row_limit
? 掃描記錄少于改值的SQL不記錄到慢查詢?nèi)罩?br/> ? 結(jié)合去記錄沒有使用索引的SQL語(yǔ)句的例子,有可能存在某一個(gè)表,數(shù)據(jù)量維持在幾行左右,且沒有建立索引。這種表即使不建立索引,查詢也很快,掃描記錄很小,如果確定有這種表,則可以通過此參數(shù)設(shè)置,將這個(gè)SQL不記錄到慢查詢?nèi)罩尽?/p>
? log_slow_admin_statements
? 記錄超時(shí)的管理操作SQL到慢查詢?nèi)罩?,比如ALTER/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
? 寫入時(shí)區(qū)信息??筛鶕?jù)需求記錄UTC時(shí)間或者服務(wù)器本地系統(tǒng)時(shí)間
二、mysqldumpslow工具使用
如果在線上操作,不需要 mysqldumpslow 去掃整個(gè) slow.log , 可以去 tail -n 10000 slow.log > last_10000_slow.log (10000 這個(gè)數(shù)字根據(jù)實(shí)際情況進(jìn)行調(diào)整 ),然后進(jìn)行 mysqldumpslow last_10000_slow.log
三、慢查詢?nèi)罩敬嫒氡?/p>
-- 在my.cnf 中增加 log_output = TABLE,打開slow_query_log選項(xiàng),然后重啟數(shù)據(jù)庫(kù)實(shí)例
--
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表的存儲(chǔ)引擎改成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)勢(shì)在于方便查詢,但是記住當(dāng)在備份的時(shí)候,不要備份慢查詢?nèi)罩镜谋?,避免備份過大。
使用 FILE 也可以,需要定時(shí)清除該文件,避免單文件過大。
“mysql中慢查詢?nèi)罩镜南嚓P(guān)參數(shù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。