站長資訊網
        最全最豐富的資訊網站

        mysql怎么查詢慢的sql語句

        方法:1、若未開啟慢查詢,用“set global slow_query_log='ON';”開啟慢;2、用“set global slow_query_log_file=路徑”設置慢查詢文件保存位置;3、用“subl 路徑”查詢文件即可。

        mysql怎么查詢慢的sql語句

        本教程操作環境:centos 7系統、mysql8.0.22版本、Dell G3電腦。

        mysql怎么查詢慢的sql語句

        Mysql中 查詢慢的 Sql語句的記錄查找

        慢查詢日志 slow_query_log,是用來記錄查詢比較慢的sql語句,通過查詢日志來查找哪條sql語句比較慢,這樣可以對比較慢的sql可以進行優化。

        登陸mysql數據庫:

        mysql怎么查詢慢的sql語句

        1、查看一下當前的慢查詢是否開啟,若未開啟則開啟

        以及慢查詢所規定的時間:

        show variables like 'slow_query_log'; show variableslike 'long_query_time';

        mysql怎么查詢慢的sql語句

        如果你的查詢后的結果是OFF 狀態的話,就需要通過相關設置將其修改為ON狀態:

        set global slow_query_log='ON';

        mysql怎么查詢慢的sql語句

        將慢查詢追蹤的時間設置為1s:

        mysql怎么查詢慢的sql語句

        這里你在設置之后,這個世界是不會立即變成1s的,需要在數據庫重啟后才生效:

        mysql怎么查詢慢的sql語句

        2、設置慢查詢日志文件保存的位置:

        set global slow_query_log_file='/var/lib/mysql/test_1116.log';

        3、 查看以下配置后的文件:

        sudo subl /var/lib/mysql/test_1116.log

        mysql怎么查詢慢的sql語句

        擴展知識:

        MySQL數據庫慢查詢問題排查方法

        最近碰到了幾次數據庫響應變慢的問題,整理了一下處理的流程和分析思路,執行腳本。希望對其他人有幫助。

        MySQL慢查詢表現

        明顯感覺到大部分的應用功能都變慢,但也不是完全不能工作,等待比較長的時間還是有響應的。但是整個系統看起來就非常的卡。

        查詢慢查詢數量

        一般來說一個正常運行的MySQL服務器,每分鐘的慢查詢在個位數是正常的,偶爾飆升到兩位數也不是不能接受,接近100系統可能就有問題了,但是還能勉強用。這幾次出問題慢查詢的數量已經到了1000多。

        慢查詢的數量保存在mysql庫里面的slow_log表。

        SELECT * FROM `slow_log` where start_time > '2019/05/19 00:00:00';

        這樣就能查出一天以來的慢查詢了。

        查看當前進行的查詢狀態

        大家應該都比較常用show processlist來查看當前系統中正在執行的查詢,其實這些數據也保存在information_schema庫里面的processlist表,因此如果要做條件查詢,直接查詢這張表更方便。

        比如查看當前所有的process

        select * from information_schema.processlist

        查看當前正在進行的查詢并按照已經執行時間倒排

        select * from information_schema.processlist where info is not null order by time desc

        正常運行的數據庫,因為一條查詢的執行速度很快,被我們的select抓到的info不是null的查詢數量會很少。我們這樣負荷很大的庫一般也就只能查到幾條。如果一次能查到info非空的查詢有幾十條,那么也可以認為系統出問題了。

        系統問題和定位

        當我們察覺到系統變慢之后,馬上用慢查詢和查看processlist的方式做了檢查,結果發現每分鐘慢查詢數量飆升到1000多,同時淤積了大量的查詢在執行中。

        因為當務之急是盡快恢復系統的正常運行,因此影響最直接的做法是在processlist的查詢結果中,查看有多少哪些查詢處于lock狀態,或者已經執行了很長時間,把這些process用kill指令干掉。通過不停的殺死這些可能會引發系統阻塞的process,最終能夠暫時讓系統逐步恢復到正常狀態,當然這只是權宜之計。

        此外,最重要的當然是分析到底是哪些查詢為什么會引發系統阻塞,我們還是使用慢查詢來做分析。

        慢查詢表查詢結果里面有幾個比較重要的指標:

        start_time 開始時間,要通過這個參數,配合系統出問題的時間,定位哪些查詢是罪魁禍首。

        query_time 查詢時間

        rows_sent 和 rows_examined發送的結果數以及查詢掃過的行數,這兩個值特別重要,特別是 rows_examined。基本上就能告訴我們,哪個查詢是需要注意的“大”查詢。

        實際操作中,我們也是把有大量rows_examined的查詢一個個拿出來分析,添加索引,修改查詢語句的編寫,來徹底的解決問題。

        處理結果和反思

        經過對所有慢查詢的檢查和整改,目前MySQL每分鐘慢查詢數徘徊在1~2之間,CPU的負荷也非常低。問題算是基本得到了解決。

        反思一下問題出現的原因,有幾個地方需要注意:

        1,數據庫出問題往往不是上線即引發問題,而是有一個累積的過程,不斷累加的糟糕的查詢語句會逐步增加系統負載,最后壓倒駱駝的最后一根稻草往往看上去莫名其妙

        2,最后的一根稻草甚至有可能根本不存在,不是一次發版或者是功能上線,而是隨著用戶使用量上升,數據量的累積而爆發

        3,既然問題的出現是累積的過程,就需要在每次代碼發版之前做好review

        4,索引的添加很重要

        5,慢查詢的監控也需要納入到Zabbix的監控范圍

        推薦學習:mysql視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 99热成人精品热久久669| 日韩精品极品视频在线观看免费| 亚洲精品午夜无码专区| 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | 精品一区二区三区免费毛片爱| 嫖妓丰满肥熟妇在线精品| 国产精品综合久成人| 无码精品久久一区二区三区| 久久精品人人槡人妻人人玩AV| 久久丝袜精品中文字幕| 国内精品久久久久影院日本| 精品一卡2卡三卡4卡免费视频| 国产精品女人呻吟在线观看| 在线观看国产精品普通话对白精品| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 久久久国产精品亚洲一区| 日本精品自产拍在线观看中文| 国产精品成人久久久久久久| 欧美精品在线一区| 欧洲精品码一区二区三区免费看| 无码囯产精品一区二区免费| 国内精品免费视频精选在线观看| 亚洲精品国精品久久99热一| 亚洲AV日韩精品一区二区三区| 国产精品福利一区二区| 精品国产欧美一区二区三区成人| 欧洲精品久久久av无码电影| 亚洲欧美精品午睡沙发| 偷拍精品视频一区二区三区| 久久精品国产黑森林| 国产在线精品一区二区夜色 | 国产精品偷伦视频观看免费| 性色精品视频网站在线观看| 尤物国精品午夜福利视频| 西瓜精品国产自在现线| 亚洲精品无码久久久久AV麻豆| 久久青青草原精品国产软件| 日本精品少妇一区二区三区| 久久久久久久亚洲精品 | 国产欧美日韩综合精品二区| 国产精品人成在线观看|