MySQLのクエリキャッシュヒット率を計算するワンライナー書いた
MySQLのパフォーマンスチューニングをしていて避けては通れない要素、key_buffer_size設定。
参考サイトによると、MyISAMインデックスに割り当てられるキャッシュサイズであるkey_buffer_size値は、以下のように、インデックスを利用するリクエストにおける、ディスクread数の割合から求められる"キャッシュヒット率"によって増減を決定されるらしいですが、
キーキャッシュのヒット率 = 100 - ( key_reads / key_read_requests × 100 )
DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!
この値は特に起動直後はかなり変動し、毎回SHOW STATUSして手動で計算するのが面倒くさいので、これを一発で求めるワンライナーを作りました。
キャッシュヒット率(単位:%)
mysqladmin -u root -p extended-status | grep -e Key_read_requests -e Key_reads |sort -f|paste -s|awk '{print 100-100*$4/$9}'
出力結果
94.3086
キャッシュミス率(単位:%)
mysqladmin -u root -p extended-status | grep -e Key_read_requests -e Key_reads |sort -f|paste -s|awk '{print 100*$4/$9}'
出力結果
5.6928
うむ。キャッシュミス率は0.3%以内に収めるのが理想的だそうなので、まだまだヒット率が小さいですね。key_buffer_sizeを増やした方がいいのかもしれません。