主頁(yè) > 知識(shí)庫(kù) > MySQL 慢查詢?nèi)罩旧钊肜斫?/div>

MySQL 慢查詢?nèi)罩旧钊肜斫?/h1>

熱門標(biāo)簽:北京金倫外呼系統(tǒng) html地圖標(biāo)注并導(dǎo)航 南太平洋地圖標(biāo)注 400電話辦理服務(wù)價(jià)格最實(shí)惠 催天下外呼系統(tǒng) 大豐地圖標(biāo)注app 400電話變更申請(qǐng) 呂梁外呼系統(tǒng) 武漢電銷機(jī)器人電話

什么是慢查詢?nèi)罩?br />

MySQL的慢查詢?nèi)罩臼?MySQL提供的一種日志記錄,它用來記錄在 MySQL 中響應(yīng)時(shí)間超過閥值的語句,具體指運(yùn)行時(shí)間超過long_query_time 值的 SQL,則會(huì)被記錄到慢查詢?nèi)罩局?/p>

具體指運(yùn)行時(shí)間超過 long_query_time 值的 SQL,則會(huì)被記錄到慢查詢?nèi)罩局小ong_query_time 的默認(rèn)值為 10, 意思是運(yùn)行 10 秒以上的語句

由它來查看哪些 SQL 超出了我們的最大忍耐時(shí)間值,比如一條SQL執(zhí)行超過 5 秒鐘,我們就算慢 SQL,希望能收集超過 5 秒的SQL,結(jié)合之前explain進(jìn)行全面分析

默認(rèn)情況下,MySQL 數(shù)據(jù)庫(kù)沒有開啟慢査詢?nèi)罩?,需要我們手?dòng)來設(shè)置這個(gè)參數(shù)。當(dāng)然,如果不是調(diào)優(yōu)需要的話,一般不建議啟動(dòng)該參數(shù),因?yàn)殚_啟慢查詢?nèi)罩緯?huì)或多或少帶來一定的性能影響。慢査詢?nèi)罩局С謱⑷罩居涗泴懭胛募?/p>

如何開啟慢查詢

查看開啟狀態(tài)

SHOW VARIABLES LIKE '%slow_query_log%'

開啟慢查詢

set global slow_query_log = 1

使用 set global_slow_query_log = 1 開啟了慢查詢?nèi)罩局粚?duì)當(dāng)前數(shù)據(jù)庫(kù)生,如果 MYSQL 重啟后則會(huì)失效。

如果要永久生效,就必須修改配置文件 my.cnf(其它系統(tǒng)變量也是如此)修改 my.cnf 文件,[mysqld]下增加或修改參數(shù)

slow_query_log 和 slow_query_log_file 后,然后重啟 MySQL 服務(wù)器。也即將如下兩行配置進(jìn)my.cnf文件

slow_query_log =1

slow_query_log_file=/var/lib/mysql/tim-slow.log

關(guān)于慢查詢的參數(shù) slow_query_log_fie,它指定慢查詢?nèi)罩疚募拇娣怕窂?,系統(tǒng)默認(rèn)會(huì)給一個(gè)缺省的文件host_name-slow.log(如果沒有指定參數(shù) slow_query_log_file的話)

那么開啟慢查詢?nèi)罩竞螅裁礃拥腟QL參會(huì)記錄到慢查詢里面?

通過 show variables like ‘long_query_time%' 來查看默認(rèn)時(shí)間長(zhǎng)度,單位是秒:

同樣的,可以使用命令修改,也可以在my.cnf里面配置。假如運(yùn)行時(shí)間正好等于 long_query_time 的情況,并不會(huì)被記錄下來。也就是說,在MySQL源碼里是判斷大于 long_query_time,而非大于等于!

設(shè)置記錄的閾值:

set global long_query_time=3;

同樣的,可以使用命令修改,也可以在my.cnf里面配置。假如運(yùn)行時(shí)間正好等于 long_query_time 的情況,并不會(huì)被記錄下來。也就是說,在MySQL源碼里是判斷大于 long_query_time,而非大于等于!

設(shè)置記錄的閾值:

set global long_query_time=3;

設(shè)置了但是還是沒有發(fā)生更改?為什么?此時(shí)需要重新開啟一個(gè)會(huì)話才可以:

接下來實(shí)行一個(gè)較慢的查詢,如下圖,但是記得要在配置文件中做如下配置:

接著去日志文件中查看存在哪些超過閾值的SQL就好了:

查詢當(dāng)前系統(tǒng)中有多少條慢查詢記錄:

記載一下我的配置文件

slow_query_log=1;
slow_query_log_file=/var/lib/mysql/tim-slow.log;
long_query_time=3;
log_output=FILE

日志分析工具mysqldumpshow

在生產(chǎn)環(huán)境中,如果要手工分析日志,查找、分析 SQL,顯然是個(gè)體力活,MYSQL 提供了日志分析工具mysqldumpshow

  • s:是表示按何種方式排序
  • c:訪問次數(shù)
  • l:鎖定時(shí)間
  • r:返回記錄
  • t:查詢時(shí)間
  • al:平均鎖定時(shí)間
  • ar:平均返回記錄數(shù)
  • at:平均查詢時(shí)間
  • t:即為返回前面多少條的數(shù)據(jù)
  • g:后邊搭配一個(gè)正則匹配模式,大小寫不敏感的

下面是使用示例:

得到返回記錄集最多的 10 個(gè) SQL

mysqldumpslow -s r -t 10 /var/lib/mysql/tim-slowlog

得到訪問次數(shù)最多的 10 個(gè) SQL

mysqldumpslow -s c-t 10 /var/lib/mysql/tim-slow log

得到按照時(shí)間排序的前 10 條里面含有左連接的查詢語句

mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/tim-slowlog

另外建議在使用這些命令時(shí)結(jié)合和 more 使用,否則有可能出現(xiàn)爆屏情況

mysqldumpslow -s r -t 10 /var/lib/mysq/tim-slow.log | more

以上就是MySQL 慢查詢?nèi)罩旧钊肜斫獾脑敿?xì)內(nèi)容,更多關(guān)于MySQL 慢查詢?nèi)罩镜馁Y料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • MYSQL慢查詢和日志實(shí)例講解
  • MYSQL慢查詢與日志的設(shè)置與測(cè)試
  • MySQL 慢查詢?nèi)罩镜拈_啟與配置
  • MySQL5.7慢查詢?nèi)罩緯r(shí)間與系統(tǒng)時(shí)間差8小時(shí)原因詳解
  • MySQL開啟慢查詢?nèi)罩竟δ艿姆椒?/li>
  • MySQL慢查詢?nèi)罩镜幕臼褂媒坛?/li>
  • 關(guān)于Mysql通用查詢?nèi)罩竞吐樵內(nèi)罩痉治?/li>
  • MySQL慢查詢?nèi)罩镜呐渲门c使用教程
  • MySQL 開啟慢查詢?nèi)罩镜姆椒?/li>
  • 詳解MySql的慢查詢分析及開啟慢查詢?nèi)罩?/li>

標(biāo)簽:迪慶 龍巖 麗水 西寧 自貢 南充 無錫 徐州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL 慢查詢?nèi)罩旧钊肜斫狻?,本文關(guān)鍵詞  MySQL,慢,查詢,日志,深入,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL 慢查詢?nèi)罩旧钊肜斫狻废嚓P(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL 慢查詢?nèi)罩旧钊肜斫獾南嚓P(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章