本文出自頭條號老王談運維,轉載請說明出處。
當你正在全神貫注的投入工作時MySQL語句變得特別緩慢,怎么辦?如何在MySQL語句中找到低效率執行的SQL語句呢?這個問題困擾著一批又一批的程序猿。
什么是慢查詢?
當SQL語句的查詢返回結果速度超過了規定的時間(即通常為1S),則規定該查詢語句為慢查詢,慢查詢會導致整個數據庫的服務器性能下降,查詢變得很緩慢。
對于MySQL慢查詢我們通常的查找解決思路是這樣的,MySQL語句變慢一般分為三種情況:
- 逐漸變慢
- 突然變慢
- 偶然變慢
當你遇到這樣的問題,怎么辦? 如何解決呢?
傳統的解決思路是這樣的:
一、 查詢日志
使用查詢日志代碼。查看日志的具體情況
slow_query_log
當這個參數設置為ON,可以搜尋到時間超過慢查詢定義的時間(即1S)SQL語句。
long_query_time
執行后會瀏覽所有SQL語句,當某些SQL語句執行超過設定時間后,系統會自動的將該條語句記錄到日志中。
所以,我們可以在日志中查詢慢查詢的SQL語句。
二、 explain語句檢查
我們知道索引查詢在列上,重復值很少時,索引效率很高。例如說:像like’%****’ 之類的語句比較多時,就會導致SQL語句的慢查詢的負載變得很高。所以,我們需要在SQL查詢語句中看類似這樣的重復值查詢語句是否很多。
三、 硬件問題
說到硬件問題,我們就不得不談到CPU(當CPU的負載變高時,是會影響計算機的處理運行速率的,會使得計算機變得很緩慢)。所以,我們此時此刻得看CPU是否負載變得很高,導致MySQL語句執行變得很緩慢。
以上就例舉常用的一些查找數據庫變得緩慢的方法,是不是覺得很麻煩,還得一步步確認哪一個環節出現問題了。下面就介紹你一個捷徑,幫你省去很多麻煩。
在這里不得不提到我們的運維神器 --王教授,助你團隊實現高效運維, 王教授的功能包括:
- 資產管理
- 健康診斷
- 統一監控
- 告警通知
- 運維審計
- 團隊協作
工具地址:https://prof.wang/
當中的“健康診斷”功能就可以輕松幫助大家定位到存在慢查詢的SQL語句,對于使用云(阿里云、騰訊云、AWS)的用戶,你只需要綁定監控的AcessKey,即可對資產進行監控、檢查。不需要你使用傳統的方法,一一定位排查問題,費時耗力。
監控業務系統實時情況,快速指出系統問題所在,輕松變身運維達人。