MySql優化 觀察伺服器狀態

2021-08-14 05:55:57 字數 1594 閱讀 4539

通常在對mysql進行優化的時候,不要一上來就去優化mysql的語句。mysql的優化是乙個系統話的過程,我們要自上而下來對mysql進行優化。mysql優化的第一步是觀察伺服器狀態,找出出問題的地方在**,然後才能有的放矢。

我們可以使用show status和show processlist命令來觀察mysql的伺服器狀態。

show status返回了伺服器很多狀態指標,但是通常我們只需要關注以下幾項:queries,threads_connected,threads_running。這三項分別代表資料庫的查詢數量,已經連線的執行緒數和正在執行的執行緒數。注意這些指標項都是乙個累計的值,所以如果我們要計算出這些統計項的差值才能觀察出伺服器的狀態。為了計算出這些統計項的差值,我們可以有兩種方案。為了能夠使用linux的awk工具來實現資料統計,我們使用mysqladmin ext來代替mysql命令列下面的show status命令。

我們首先新建乙個start.sh指令碼檔案,指令碼內容為

#!/bin/bash

while

true

domysqladmin -uroot ext|awk '/queries//threads_connected//threads_running/end' >> status.txt

sleep 1

done

這個指令碼的意思其實很簡單,每隔一秒查詢出mysql的查詢數目,執行緒連線數目,執行緒執行數目,並將結果追加到status.txt檔案中。我們可以將這個指令碼執行24個小時或者一定的時間,然後對status的內容進行分析。(關於awk,可以參考這裡不再贅述)。

然後使用awk統計出status檔案中的上下兩行的差值,使用下面的shell命令:

awk

'beginnr==1' status.txt

該命令列可以統計出mysql伺服器的狀態差值,同樣使用了linux的awk工具。

然後我們可以將統計出的資料匯入成為excel**,生成圖表,就可以清楚的看出來伺服器的狀態走勢。

我們可以直接使用mysqladmin ext的引數來統計出來mysql的伺服器狀態。通過-r和-i引數我們可以達到同樣的效果。-r可以看到各個指標的差值,-i可以設定重新整理頻率。

mysqladmin -uroot

-r-i

-p*** ext

結合awk我們就可以統計出來mysql伺服器的狀態。

mysqladmin -uroot -p*** -r -i 1 ext |awk -f"|" 'if($2 ~ /queries|threads_connected|threads_running/)}' >>status.txt
通過觀察伺服器的連線狀態和查詢數量,我們可以繪製出伺服器的狀態折線圖。通常如果狀態折線圖中總是週期性的出現查詢高峰,可能就是快取的失效時間固定在某個時間點。針對這樣的情況,我們可以增加快取時間,每天夜裡重新整理快取。通常情況下夜間的訪問量不會太大,在夜間快取失效不會造成查詢洪峰。等到白天查詢變多的時候,其實我們已經建立起了一部分索引。避免出現查詢高峰。

或者我們可以把快取時間設為乙個區間值,讓快取逐漸失效,而不是在某乙個點一起失效。這樣也能有效的防止查詢高峰。

MySQL優化 伺服器優化

標籤 空格分隔 mysql 伺服器的硬體效能直接決定著mysql資料庫的效能,硬體的效能瓶頸,直接決定mysql資料庫的執行速度和效率。需要從以下幾個方面考慮 1 配置較大的記憶體。足夠大的記憶體,是提高mysql資料庫效能的方法之一。記憶體的io比硬碟快的多,可以增加系統的緩衝區容量,使資料在記憶...

優化MYSQL伺服器

mysql伺服器有幾個影響其操作的引數 變數 如果預設的引數值不合適,可以將其修改為對伺服器執行環境更合適的值。例如,如果您有大量的記憶體,可以告訴服務為磁碟和索引操作使用較大的緩衝區。這將使記憶體持有更多的資訊並減少了必須進行的磁碟訪問的數 量。如果是一般的系統,可以告訴伺服器使用較小的緩衝區,以...

優化MYSQL伺服器

mysql伺服器有幾個影響其操作的引數 變數 如果預設的引數值不合適,可以將其修改為對伺服器執行環境更合適的值。例如,如果您有大量的記憶體,可以告訴服務為磁碟和索引操作使用較大的緩衝區。這將使記憶體持有更多的資訊並減少了必須進行的磁碟訪問的數 量。如果是一般的系統,可以告訴伺服器使用較小的緩衝區,以...