聊聊什么是慢查、如何監控?如何排查?


聊聊什么是慢查、如何監控?如何排查?

 

Hi,大家好!我是白日夢。

今天我要跟你分享的話題是:“聊聊什么是慢查、如何監控?如何排查?”

一、 推薦閱讀方式#

首發地址:https://mp.weixin.qq.com/s/tXTLMCiVpEnnmhUclYR19Q


使用推薦閱讀,有更好的閱讀體驗 

二、什么是慢查?#

慢查,顧名思義就是很慢的查詢。SQL的執行總是有一個執行時間的,通過long_query_time參數告訴MySQL,當SQL的執行時間超過該參數的指定值后就將這條SQL記錄在慢查日志中。

默認的long_query_time默認值為10s



三、怎么調整界定慢查的時間?#

設置全局慢查時間為0.2秒。

注意:long_query_time屬於dynamic類型的參數。意思是像上面這樣在會話A中通過命令行的方式設置全局 long_query_time為0.2秒后,再打開一個新的會話B查看該變量會發現 long_query_time=0.2

但是在會話A中查看session級別的long_query_time依然為默認的10s



四、慢查日志像binlog那樣是真實的日志文件嗎?#

在MySQL5.1之前確實慢查日志確實是以文件的形式存在。但是MySQL5.1之后MySQL允許我們可以將慢查日志放入一個數據表中,便於我們查看分析。

現在公司使用的一般都是5.6~5.7版本。當然即使5.1版本之后支持了將數據放入Table中,默認配置依然是File。

當然你也可以通過下面的命令將慢查輸出類型改成Table



五、慢查有什么危害?#

研發同學都知道:對於Linux操作系統來說,一個進程能打開的Socket文件句柄是上限的。即使我們可以動態的調整它的大小,但是也做不到無限大。

通過命令: 查看進程被限制的使用各種資源的量

Copy
Copyulimit -a 

core file size: 進程崩潰是轉儲文件大小限制
man loaded memort 最大鎖定內存大小
open file 能打開的文件句柄數

大量的慢查占據MySQL連接(Linux操作系統會為每一條連接創建socket文件),慢查累積到一定程度還會導致正常的SQL得不到連接執行從而變成慢查SQL,最終有可能導致MySQL的連接全部被耗光而夯死。這就是生產級別的事故了。



六、如何監控慢查?#

查看曾經執行完成的慢查

如果你需要編寫一個監控程序探測MySQL的慢查詢。那完全可以探測分析MySQL的slow.log

如果你還不知道slow.log在哪里,可以像下面這樣定位到它。slow.log中記錄的就是曾經執行過的慢查信息。

這是你可以嘗試使用select sleep(2);模擬一條慢查SQL

然后去慢查sql中查看具體的慢查詳情。

查看正在進行的慢查SQL

我在A Session中發起SQL,select sleep(60);

然后在B Session中通過下圖的方式可以看到當前正在進行的慢查情況。大家在看的時候注意:Command的類型為Query

MySQL也為用戶提供了一些原生的慢查工具。比如:查看執行時間最長的10條SQL

mysqldumpslow -s a1 -n 10 mysql.slow_log

了解即可



七、線上出慢查了如何處理?#

首先你得知道通常情況下每個公司都有自己監控系統,或者是監控腳本,具體的監控邏輯就是上節講述的思路。故一旦出現報警,DBA同學會在第一時間接到消息。

DBA同學一般都會去聯系業務同學,由業務同學去處理這個慢查。(相信已經工作的同學深有這個體會)
(更多內容歡迎關注白日夢的公眾號閱讀)

關注我看更多內容,每早推送,可以在地鐵、班車上、上班前閱讀! ......

查看MySQL專題110篇文章大綱:https://mp.weixin.qq.com/s/HTw-Z-SyprYA8bCBZ4NpGQ


參考:https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html


八、關注我#

為大家帶來MySQL面試專題!本文是第二篇、全文110篇!

以問答的方式,由淺入深的幫你應對各類MySQL面試題的狂轟濫炸!當然也不乏會分享一些高階讀寫分離數據庫中間件原理及落地的技術實現,為你揭開數據庫中間件神秘的面紗!

面試官都關注了!你還在猶豫什么呢?

作者: 賜我白日夢

出處:https://www.cnblogs.com/ZhuChangwu/p/13960007.html

本站使用「CC BY 4.0」創作共享協議,轉載請在文章明顯位置注明作者及出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM