免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
MySQL慢查日志

監(jiān)控系統(tǒng)監(jiān)控到我們的程序變慢了,懷疑是sql的原因,要怎么去分析排查呢?一般按照如下幾個(gè)步驟進(jìn)行:

  • 開啟慢查詢?nèi)罩荆O(shè)置閥值,將慢sql從日志中抓取出來;
  • 分析慢sql,查看其執(zhí)行計(jì)劃;
  • show profile,查詢sql的執(zhí)行細(xì)節(jié)和生命周期情況;
  • MySQL數(shù)據(jù)庫參數(shù)調(diào)優(yōu)。

本文先來講講慢查日志。

1. 是什么?

MySQL慢查日志是一種記錄執(zhí)行很慢的sql的日志。MySQL中可以通過long_query_time來設(shè)置一個(gè)閥值,如果執(zhí)行時(shí)間超過這個(gè)閥值,就會(huì)被認(rèn)為是慢sql,就會(huì)記錄到慢查日志中。該閥值默認(rèn)是10s,即執(zhí)行超過10s的sql就會(huì)被記錄。

2. 怎么用?

  • 開啟方法:

MySQL默認(rèn)是沒有開啟慢查日志的,如果不是調(diào)優(yōu)需要的話,不建議開啟,因?yàn)檫@個(gè)也會(huì)帶來性能的影響。執(zhí)行以下sql可以查詢是否開啟慢查日志以及慢查日志的路徑:

show variables like '%slow_query_log%';
執(zhí)行結(jié)果

可以看到默認(rèn)是off的。執(zhí)行以下sql即可開啟:

set global slow_query_log = 1;
執(zhí)行結(jié)果

可以看到,已經(jīng)變成on了,也就是開啟了。不過這樣設(shè)置并不是永久生效,重啟后就失效了,如果要永久生效,就得修改MySQL的配置文件my.cnf,在[mysqld]下增加如下配置:

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

增加了這兩行配置后,重啟MySQL就可以了。

  • 修改閥值:

執(zhí)行如下sql可以查看當(dāng)前設(shè)置的閥值:

show variables like 'long_query_time';
執(zhí)行結(jié)果

可以看到,當(dāng)前設(shè)置的是10秒。要大于10s才會(huì)觸發(fā),等于是不會(huì)觸發(fā)的。但是10s這個(gè)閥值太大了,我們一般會(huì)改小一點(diǎn),通過以下sql可以修改該值:

set long_query_time = 3;
執(zhí)行結(jié)果

那么我們要怎么驗(yàn)證修改是否生效呢?也就是超過3s的sql到底有沒有被記錄到慢查日志中呢?執(zhí)行如下sql:

select sleep(4);

這條sql就要睡4秒之后才會(huì)執(zhí)行,所以最少都要執(zhí)行4秒多,我們?cè)O(shè)置的閥值是3秒,所以肯定會(huì)被記錄。

剛才查看了知道慢查日志名字叫localhost-slow.log,那么到底在哪個(gè)目錄下?可以通過執(zhí)行如下命令來查找:

find / -name "localhost-slow.log"
執(zhí)行結(jié)果

我們cat一下這個(gè)文件,看看剛剛執(zhí)行的select sleep(4)到底有沒有被記錄,結(jié)果如下:

執(zhí)行結(jié)果

可以看到,確實(shí)生效了,sql被記錄到了慢查日志中。

我們還可以通過執(zhí)行如下語句,來查詢當(dāng)前有多少條慢sql:

show global status like "%Slow_queries%";
執(zhí)行結(jié)果
  • 日志分析工具:mysqldumpslow

生產(chǎn)環(huán)境可能會(huì)出現(xiàn)很多的慢查日志,如果都要手工分析,也是比較費(fèi)時(shí)的,MySQL提供了慢查日志分析工具,mysqldumpslow。

執(zhí)行如下命令可以查看幫助文檔:

mysqldumpslow --help
幫助文檔

常見命令如下:

# 得到返回記錄集最多的10個(gè)sql
mysqldumpslow -s r -t 10 /var/lib/mysql/localhost-slow.log

# 得到訪問次數(shù)最多的10個(gè)sql
mysqldumpslow -s c -t 10 /var/lib/mysql/localhost-slow.log

# 得到按照時(shí)間排序的前10條里面含有左連接的查詢語句
mysqldumpslow -s t -t 10 -g "left join"  /var/lib/mysql/localhost-slow.log

# 一般執(zhí)行上面的語句都要和 | more 一起使用,否則爆屏
mysqldumpslow -s r -t 10 /var/lib/mysql/local

掃描二維碼

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
[MySQL]開啟慢查詢?nèi)罩疽约拔词褂盟饕齋QL日志
發(fā)現(xiàn)瓶頸 - Profiling(程序剖析) -MySQL Profiling
快速開啟MySQL慢日志查詢的方法
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服