高效能的MySQL(3)單條查詢問題還是伺服器問題

2021-09-21 09:42:38 字數 880 閱讀 2532

發現問題的時候,要確定是單條查詢的問題還是伺服器的問題,如果伺服器上的所有程式都變慢了,又突然都變好了,每一條查詢都變慢了,那麼慢查詢就不一定是原因,反過來說,如果伺服器整體執行沒有問題,只有某條查詢偶爾變慢,就需要將注意力放到這條特定查詢上。

為了確定問題的根源,一般我們通過三種技術來解決。

1、show global status

這個方法實際就是以較高的頻率比如一秒執行一次show global status命令來捕獲資料,問題出現時,則通過某些計數器(比如 threads_running、threads_connected、questions、queries)的變化來發現。這個對服務的影響比較小。例如下面的例子

通過awk計算輸出每秒的查詢數、執行緒連線數和正在執行查詢的執行緒數,通過一段時間的執行,把資料繪製成影象,可以有利於分析和定位問題。

2、使用show processlist

這個方法通過不停的捕獲 show processlist的輸出,來觀察是否有大量執行緒處於不正常狀態。

使用show processlist命令時,在尾部加上\g可以垂直輸出,可以方便的結合sort|uniq|sort一類的命令來計算某個列值出現的次數

如下面的例子

因為是我本地的測試環境,所以沒有什麼資料,另外ubuntu下的截圖太不好用了,只能將就了。

比如:state大量的執行緒處於「freeing items」狀態是出現了大量有問題查詢的很明顯的特徵

myisam乙個典型的問題是,他的表級別鎖定,在寫請求很多時,可能迅速導致伺服器級別的執行緒堆積。

3、使用慢查詢

通過設定long_query_time = 0,來根據慢查詢日誌統計每秒的查詢結果

觀察可以資料,然後分析。

建議先使用1、2的方法,因為開銷低,可以簡單重複操

高效能的MySQL(3)單條查詢問題還是伺服器問題

發現問題的時候,要確定是單條查詢的問題還是伺服器的問題,如果伺服器上的所有程式都變慢了,又突然都變好了,每一條查詢都變慢了,那麼慢查詢就不一定是原因,反過來說,如果伺服器整體執行沒有問題,只有某條查詢偶爾變慢,就需要將注意力放到這條特定查詢上。為了確定問題的根源,一般我們通過三種技術來解決。1 sh...

高效能MySQL 3 伺服器效能剖析

五 其他剖析工具 常見問題 1 效能瓶頸可能的影響因素 2 php效能剖析工具 new relic xhprof lfp 1 剖析伺服器負載 2 剖析單條語句 1 系織偶爾停頓或慢查詢,無法確認如何重現,很難診斷,診斷這樣的問題往往花費很多時間,甚至好幾個月。盡量不要用試錯的方式來解決問題,這種方式...

高效能的MySQL(2)單條SQL效能

實際應用中,分析單條查詢sql效能,有3種方法 show status show profile和慢查詢日誌。一 使用show profile 1 預設是禁用的,在會話中開啟 開啟profile set profiling 1 2 當乙個查詢到達伺服器時,此工具會把分析資訊記錄到一張臨時表,並且給查...