MyISAM中key_buffer_size的設置 Key_read_requests和Key_reads就是兩個計數器,它們的含義如下: Key_read_requests:從緩存讀取索引的請求次數。 Key_reads:從磁盤讀取索引的請求次數。 通常人們認為Key_read_requests / Key_reads越大越好,否則就應該增大key_buffer_size的設置,但通過計數器的比例來調優有兩個問題: 問題一:比例並不顯示數量的絕對值大小 問題二:計數器並沒有考慮時間因素 雖說Key_read_requests大比小好,但是對於系統調優而言,更有意義的應該是單位時間內的Key_reads: Key_reads / Uptime 你可以通過命令行得到一個實時的數據結果,比如: # mysqladmin ext -ri10 | grep Key_reads | Key_reads | 83777189 | | Key_reads | 211 | | Key_reads | 177 | | Key_reads | 202 | 提示:命令裡的mysqladmin ext其實就是mysqladmin extended-status,你甚至可以簡寫成mysqladmin e。 其中第一行表示的是匯總數值,所以這裡不必考慮,下面的每行數值都表示10秒內的數據變化,從這份數據可以看出每10秒系統大約會出現200次Key_reads訪問,折合到每1秒就是20次左右,至於這個數值到底合理與否,就由服務器的磁盤能力而定了。 順便說一句,為啥數據按10秒取樣,而不是直接按1秒取樣?這裡看看按1秒的結果: # mysqladmin ext -ri1 | grep Key_reads | Key_reads | 83776743 | | Key_reads | 7 | | Key_reads | 7 | | Key_reads | 38 | 可以看到,由於時間段過小,數據變化比較劇烈,不容易直觀估計大小,所以通常數據按照10秒或者60秒之類的時間段來取樣是更好的。 忘記:Key_read_requests / Key_reads 牢記:Key_reads / Uptime