SQL慢查詢排查思路

wenbochang發表於2021-07-27

 前言

  • 平時在工作中每天都會做巡檢,將前一天所有超過500ms的慢SQL排查出來

  • 查詢原因,是否能進行優化。慢慢中,在形成了一套思路方法論。

  • 我個人認為對於排查慢SQL還是有一定的幫助

 

(一)、是否是SQL語句本身導致的慢SQL

  • SQL語句是否走了索引。此條可以用explain命令檢視
  • SQL語句是不是select的資料量非常非常的大。比如是一個長長的json串,在網路傳輸的過程中會非常的耗時

 

(二)、SQL慢查詢是否是其他外在因素導致的

  • 如果SQL語句本身沒有問題,大概率就是偶爾出現,其他因素影響的。

  • 慢SQL這段時間,請求量是否很大,MySQL是否能支撐住此刻的訪問量

  • 此刻時間,是否有定時任務在大量運算元據庫,造成鎖表等?
  • 是不是其他組執行了一條很長的操作,影響了你們的SQL

 

(三)、SQL慢查詢是否只在一個機房出現

  • 比如應用部署在了A, B兩個機房。當時資料庫在A機房。

  • 此時A機房的應用請求資料庫,明顯會比B機房的應用,跨機房請求A機房的資料庫要效果好。

  • 此刻時間,是否只有跨機房才會出現慢SQL。同機房不會出現

 

(四)、SQL慢查詢是否由於網路原因

  • 比如應用到資料庫並不是直連的,。應用 -->  中介軟體A  -->  中介軟體B  -->  資料庫例項

  • 應用到中介軟體A。此段網路是否正常,中介軟體A 到B是否正常,中介軟體B到資料資料庫是否正常等等

  • 可以用tcpdump抓包看看。是否出現了重傳的現象,是否某一刻網路出現了問題等等

 

 

 

相關文章