MySQL 慢查詢(xún)?nèi)罩旧钊肜斫?/h1>
更新時(shí)間:2021年04月22日 10:03:36 作者:zchanglin
這篇文章主要介紹了MySQL 慢查詢(xún)?nèi)罩镜南嚓P(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
什么是慢查詢(xún)?nèi)罩?br />
MySQL的慢查詢(xún)?nèi)罩臼?MySQL提供的一種日志記錄,它用來(lái)記錄在 MySQL 中響應(yīng)時(shí)間超過(guò)閥值的語(yǔ)句,具體指運(yùn)行時(shí)間超過(guò)long_query_time 值的 SQL,則會(huì)被記錄到慢查詢(xún)?nèi)罩局?/p>
具體指運(yùn)行時(shí)間超過(guò) long_query_time 值的 SQL,則會(huì)被記錄到慢查詢(xún)?nèi)罩局?。long_query_time 的默認(rèn)值為 10, 意思是運(yùn)行 10 秒以上的語(yǔ)句
由它來(lái)查看哪些 SQL 超出了我們的最大忍耐時(shí)間值,比如一條SQL執(zhí)行超過(guò) 5 秒鐘,我們就算慢 SQL,希望能收集超過(guò) 5 秒的SQL,結(jié)合之前explain進(jìn)行全面分析
默認(rèn)情況下,MySQL 數(shù)據(jù)庫(kù)沒(méi)有開(kāi)啟慢査詢(xún)?nèi)罩?,需要我們手?dòng)來(lái)設(shè)置這個(gè)參數(shù)。當(dāng)然,如果不是調(diào)優(yōu)需要的話(huà),一般不建議啟動(dòng)該參數(shù),因?yàn)殚_(kāi)啟慢查詢(xún)?nèi)罩緯?huì)或多或少帶來(lái)一定的性能影響。慢査詢(xún)?nèi)罩局С謱⑷罩居涗泴?xiě)入文件!
如何開(kāi)啟慢查詢(xún)
查看開(kāi)啟狀態(tài)
SHOW VARIABLES LIKE '%slow_query_log%'

開(kāi)啟慢查詢(xún)
set global slow_query_log = 1
使用 set global_slow_query_log = 1 開(kāi)啟了慢查詢(xún)?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)于慢查詢(xún)的參數(shù) slow_query_log_fie,它指定慢查詢(xún)?nèi)罩疚募拇娣怕窂剑到y(tǒng)默認(rèn)會(huì)給一個(gè)缺省的文件host_name-slow.log(如果沒(méi)有指定參數(shù) slow_query_log_file的話(huà))
那么開(kāi)啟慢查詢(xún)?nèi)罩竞?,什么樣的SQL參會(huì)記錄到慢查詢(xún)里面?
通過(guò) show variables like ‘long_query_time%' 來(lái)查看默認(rèn)時(shí)間長(zhǎng)度,單位是秒:

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

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

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

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

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

記載一下我的配置文件
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:訪(fǎng)問(wèn)次數(shù)
- l:鎖定時(shí)間
- r:返回記錄
- t:查詢(xún)時(shí)間
- al:平均鎖定時(shí)間
- ar:平均返回記錄數(shù)
- at:平均查詢(xún)時(shí)間
- t:即為返回前面多少條的數(shù)據(jù)
- g:后邊搭配一個(gè)正則匹配模式,大小寫(xiě)不敏感的
下面是使用示例:
得到返回記錄集最多的 10 個(gè) SQL
mysqldumpslow -s r -t 10 /var/lib/mysql/tim-slowlog
得到訪(fǎng)問(wèn)次數(shù)最多的 10 個(gè) SQL
mysqldumpslow -s c-t 10 /var/lib/mysql/tim-slow log
得到按照時(shí)間排序的前 10 條里面含有左連接的查詢(xún)語(yǔ)句
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 慢查詢(xún)?nèi)罩旧钊肜斫獾脑敿?xì)內(nèi)容,更多關(guān)于MySQL 慢查詢(xún)?nèi)罩镜馁Y料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- MySQL慢查詢(xún)?nèi)罩緎lowlog的具體使用
- 詳解MySQL的慢查詢(xún)?nèi)罩竞湾e(cuò)誤日志
- 怎樣快速開(kāi)啟MySQL的慢查詢(xún)?nèi)罩?/a>
- MySQL通用查詢(xún)?nèi)罩竞吐樵?xún)?nèi)罩救娣治?/a>
- MySQL慢查詢(xún)?nèi)罩局械腖ock_time由來(lái)解析
- MySQL慢查詢(xún)?nèi)罩境敿?xì)總結(jié)
- 深入了解MySQL中的慢查詢(xún)?nèi)罩?/a>
- MySQL優(yōu)化教程之慢查詢(xún)?nèi)罩緦?shí)踐
- MySQL慢查詢(xún)?nèi)罩镜淖饔煤烷_(kāi)啟
- MySQL 慢查詢(xún)?nèi)罩镜拈_(kāi)啟與配置
- MySQL慢查詢(xún)?nèi)罩?Slow Query Log)的實(shí)現(xiàn)
相關(guān)文章
-
MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)高可用架構(gòu)之MHA的實(shí)戰(zhàn)
本文主要介紹了MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)高可用架構(gòu)之MHA的實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2022-02-02
-
MySQL連接異常:Communications link failure問(wèn)題及解決
這篇文章主要介紹了MySQL連接異常:Communications link failure問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教 2023-11-11
-
MySQL數(shù)據(jù)庫(kù)設(shè)計(jì)之利用Python操作Schema方法詳解
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)設(shè)計(jì)之利用Python操作Schema方法詳解,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。 2017-11-11
-
MySQL實(shí)現(xiàn)導(dǎo)出excel的方法分析
這篇文章主要介紹了MySQL實(shí)現(xiàn)導(dǎo)出excel的方法,結(jié)合實(shí)例形式分析了基于php、js等方法實(shí)現(xiàn)mysql導(dǎo)出Excel的相關(guān)操作技巧,需要的朋友可以參考下 2018-03-03
-
Linux/UNIX和Window平臺(tái)上安裝Mysql
這篇文章主要為大家詳細(xì)介紹了Linux/UNIX和Window兩個(gè)系統(tǒng)上采用命令安裝Mysql的方法,感興趣的小伙伴們可以參考一下 2016-05-05
-
MySQL的查詢(xún)計(jì)劃中ken_len的值計(jì)算方法
本文首先介紹了MySQL的查詢(xún)計(jì)劃中ken_len的含義;然后介紹了key_len的計(jì)算方法;最后通過(guò)一個(gè)偽造的例子,來(lái)說(shuō)明如何通過(guò)key_len來(lái)查看聯(lián)合索引有多少列被使用 2017-02-02
-
mysql signed unsigned和zerofill使用與區(qū)別
mysql中有符號(hào)signed,無(wú)符號(hào)unsigned與零填充zerofill,本文主要介紹了mysql signed unsigned和zerofill使用與區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下 2024-07-07
-
數(shù)據(jù)庫(kù)查詢(xún)哪個(gè)對(duì)像里面包含什么字段方法語(yǔ)句
在本篇文章里小編給大家整理的關(guān)于數(shù)據(jù)庫(kù)查詢(xún)哪個(gè)對(duì)像里面包含什么字段方法語(yǔ)句有需要的朋友們可以學(xué)習(xí)下。 2019-08-08
最新評(píng)論
什么是慢查詢(xún)?nèi)罩?br />
MySQL的慢查詢(xún)?nèi)罩臼?MySQL提供的一種日志記錄,它用來(lái)記錄在 MySQL 中響應(yīng)時(shí)間超過(guò)閥值的語(yǔ)句,具體指運(yùn)行時(shí)間超過(guò)long_query_time 值的 SQL,則會(huì)被記錄到慢查詢(xún)?nèi)罩局?/p>
具體指運(yùn)行時(shí)間超過(guò) long_query_time 值的 SQL,則會(huì)被記錄到慢查詢(xún)?nèi)罩局?。long_query_time 的默認(rèn)值為 10, 意思是運(yùn)行 10 秒以上的語(yǔ)句
由它來(lái)查看哪些 SQL 超出了我們的最大忍耐時(shí)間值,比如一條SQL執(zhí)行超過(guò) 5 秒鐘,我們就算慢 SQL,希望能收集超過(guò) 5 秒的SQL,結(jié)合之前explain進(jìn)行全面分析
默認(rèn)情況下,MySQL 數(shù)據(jù)庫(kù)沒(méi)有開(kāi)啟慢査詢(xún)?nèi)罩?,需要我們手?dòng)來(lái)設(shè)置這個(gè)參數(shù)。當(dāng)然,如果不是調(diào)優(yōu)需要的話(huà),一般不建議啟動(dòng)該參數(shù),因?yàn)殚_(kāi)啟慢查詢(xún)?nèi)罩緯?huì)或多或少帶來(lái)一定的性能影響。慢査詢(xún)?nèi)罩局С謱⑷罩居涗泴?xiě)入文件!
如何開(kāi)啟慢查詢(xún)
查看開(kāi)啟狀態(tài)
SHOW VARIABLES LIKE '%slow_query_log%'

開(kāi)啟慢查詢(xún)
set global slow_query_log = 1
使用 set global_slow_query_log = 1 開(kāi)啟了慢查詢(xún)?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)于慢查詢(xún)的參數(shù) slow_query_log_fie,它指定慢查詢(xún)?nèi)罩疚募拇娣怕窂剑到y(tǒng)默認(rèn)會(huì)給一個(gè)缺省的文件host_name-slow.log(如果沒(méi)有指定參數(shù) slow_query_log_file的話(huà))
那么開(kāi)啟慢查詢(xún)?nèi)罩竞?,什么樣的SQL參會(huì)記錄到慢查詢(xún)里面?
通過(guò) show variables like ‘long_query_time%' 來(lái)查看默認(rèn)時(shí)間長(zhǎng)度,單位是秒:

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

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

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

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

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

記載一下我的配置文件
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:訪(fǎng)問(wèn)次數(shù)
- l:鎖定時(shí)間
- r:返回記錄
- t:查詢(xún)時(shí)間
- al:平均鎖定時(shí)間
- ar:平均返回記錄數(shù)
- at:平均查詢(xún)時(shí)間
- t:即為返回前面多少條的數(shù)據(jù)
- g:后邊搭配一個(gè)正則匹配模式,大小寫(xiě)不敏感的
下面是使用示例:
得到返回記錄集最多的 10 個(gè) SQL
mysqldumpslow -s r -t 10 /var/lib/mysql/tim-slowlog
得到訪(fǎng)問(wèn)次數(shù)最多的 10 個(gè) SQL
mysqldumpslow -s c-t 10 /var/lib/mysql/tim-slow log
得到按照時(shí)間排序的前 10 條里面含有左連接的查詢(xún)語(yǔ)句
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 慢查詢(xún)?nèi)罩旧钊肜斫獾脑敿?xì)內(nèi)容,更多關(guān)于MySQL 慢查詢(xún)?nèi)罩镜馁Y料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- MySQL慢查詢(xún)?nèi)罩緎lowlog的具體使用
- 詳解MySQL的慢查詢(xún)?nèi)罩竞湾e(cuò)誤日志
- 怎樣快速開(kāi)啟MySQL的慢查詢(xún)?nèi)罩?/a>
- MySQL通用查詢(xún)?nèi)罩竞吐樵?xún)?nèi)罩救娣治?/a>
- MySQL慢查詢(xún)?nèi)罩局械腖ock_time由來(lái)解析
- MySQL慢查詢(xún)?nèi)罩境敿?xì)總結(jié)
- 深入了解MySQL中的慢查詢(xún)?nèi)罩?/a>
- MySQL優(yōu)化教程之慢查詢(xún)?nèi)罩緦?shí)踐
- MySQL慢查詢(xún)?nèi)罩镜淖饔煤烷_(kāi)啟
- MySQL 慢查詢(xún)?nèi)罩镜拈_(kāi)啟與配置
- MySQL慢查詢(xún)?nèi)罩?Slow Query Log)的實(shí)現(xiàn)
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)高可用架構(gòu)之MHA的實(shí)戰(zhàn)
本文主要介紹了MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)高可用架構(gòu)之MHA的實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
MySQL連接異常:Communications link failure問(wèn)題及解決
這篇文章主要介紹了MySQL連接異常:Communications link failure問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
MySQL數(shù)據(jù)庫(kù)設(shè)計(jì)之利用Python操作Schema方法詳解
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)設(shè)計(jì)之利用Python操作Schema方法詳解,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-11-11
MySQL實(shí)現(xiàn)導(dǎo)出excel的方法分析
這篇文章主要介紹了MySQL實(shí)現(xiàn)導(dǎo)出excel的方法,結(jié)合實(shí)例形式分析了基于php、js等方法實(shí)現(xiàn)mysql導(dǎo)出Excel的相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
Linux/UNIX和Window平臺(tái)上安裝Mysql
這篇文章主要為大家詳細(xì)介紹了Linux/UNIX和Window兩個(gè)系統(tǒng)上采用命令安裝Mysql的方法,感興趣的小伙伴們可以參考一下2016-05-05
MySQL的查詢(xún)計(jì)劃中ken_len的值計(jì)算方法
本文首先介紹了MySQL的查詢(xún)計(jì)劃中ken_len的含義;然后介紹了key_len的計(jì)算方法;最后通過(guò)一個(gè)偽造的例子,來(lái)說(shuō)明如何通過(guò)key_len來(lái)查看聯(lián)合索引有多少列被使用2017-02-02
mysql signed unsigned和zerofill使用與區(qū)別
mysql中有符號(hào)signed,無(wú)符號(hào)unsigned與零填充zerofill,本文主要介紹了mysql signed unsigned和zerofill使用與區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07
數(shù)據(jù)庫(kù)查詢(xún)哪個(gè)對(duì)像里面包含什么字段方法語(yǔ)句
在本篇文章里小編給大家整理的關(guān)于數(shù)據(jù)庫(kù)查詢(xún)哪個(gè)對(duì)像里面包含什么字段方法語(yǔ)句有需要的朋友們可以學(xué)習(xí)下。2019-08-08

