MySQL慢查詢?nèi)罩镜呐渲门c使用教程
前言
MySQL慢查詢?nèi)罩臼俏覀冊谌粘9ぷ髦薪?jīng)常會遇到的一個功能,MySQL慢查詢?nèi)罩咎峁┝顺^指定時間閾值的查詢信息,為性能優(yōu)化提供了主要的參考依據(jù),是一個非常實用的功能,MySQL慢查詢?nèi)罩镜拈_啟和配置非常簡單,可以指定記錄的文件(或者表),超過的時間閾值等就可以記錄到慢sql了,實話講,相比較sqlserver的trace或者擴(kuò)展事件(雖然此二者的作用并非僅僅如此),MySQL的配置總是給人一種非常清爽的感覺。
一、慢查詢?nèi)罩镜拇蜷_
正常情況下,只需要在配置文件中增加slow_query_log = 1
配置,即打開慢查詢?nèi)罩?,未指定slow_query_log_file的情況下,會自動生成一個以主機(jī)名+‘slow'.log 的文件。
二、默認(rèn)情況下記錄慢查詢的時間閾值為10s
默認(rèn)情況下,指定slow_query_log = 1
的情況其啟動MySQL,即可打開慢查詢,自動生成一個默認(rèn)的以主機(jī)名++‘slow'.log 的文件來記錄超過執(zhí)行超過10s的慢查詢。
也可以顯式指定慢查詢的日志文件名稱(不存在會自動創(chuàng)建)和記錄慢查詢的時間閾值(非默認(rèn)的10s)。
注意:在配置文件中指定long_query_time的時候,不需要時間單位,只需要一個值,比如1就代表1s,如果帶了時間單位,服務(wù)將無法啟動。
如下是一個記錄到日志文件中的慢sql的示例
三、記錄慢查詢?nèi)罩镜奖?/strong>
配置:需要添加一個log_output的配置,就可以將慢查詢記錄到表中了
mysql庫下面有一個默認(rèn)的slow_log表,可以直接將slow_query_log_file = slow_log
,即可將慢查詢?nèi)罩居涗浀奖碇小?/p>
記錄到的slow sql如下,可以發(fā)現(xiàn)sql_text是一個二進(jìn)制的信息,并非原始的sql文本
可以通過CONVERT函數(shù)轉(zhuǎn)換一下即可。
關(guān)于慢查詢記錄到日志文件和表中的區(qū)別:
1、慢查詢記錄到日志文件和表中,記錄本身差別不大,如果是記錄在表中,慢查詢的執(zhí)行時間信息無法精確到微妙,
2、如果將慢查詢信息記錄在表中,方便查詢,但因為是結(jié)構(gòu)化的數(shù)據(jù),可能會比記錄在慢查詢?nèi)罩疚募校ㄆ矫嫖谋疚募┮稽c點(個人猜測),如果是記錄到文件,需要mysqldumpslow工具解析。
3、慢查詢不記錄執(zhí)行失敗的查詢,比如long_query_time設(shè)置為10(10秒鐘),一個查詢超過了10秒鐘,但是因為其他原因執(zhí)行失敗,MySQL的慢查詢將無法記錄此查詢信息。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
解決hibernate+mysql寫入數(shù)據(jù)庫亂碼
初次沒習(xí)hibernate,其中遇到問題在網(wǎng)上找的答案與大家共同分享!2009-07-07Mysql數(shù)據(jù)庫綠色版安裝教程 解決系統(tǒng)錯誤1067的方法
這篇文章主要為大家詳細(xì)介紹了MySql數(shù)據(jù)庫綠色版安裝教程,以及系統(tǒng)錯誤1067的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08mysql下為數(shù)據(jù)庫設(shè)置交叉權(quán)限的方法
由于 SupeSite 需要調(diào)用 Discuz! 和 UCHome 的數(shù)據(jù),所以如果它們不安裝在同一個數(shù)據(jù)庫,SupeSite 的數(shù)據(jù)庫用戶必須要對 Discuz! 和 UCHome 的數(shù)據(jù)庫有讀取、修改、刪除等權(quán)限。2011-07-07Mysql?索引?BTree?與?B+Tree?的區(qū)別(面試)
這篇文章主要介紹了Mysql索引BTree與B+Tree的區(qū)別,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09