ブログ - MySQLのkey_buffer_sizeを考える その2
以前,考察してから2週間経過した.
key_buffer_sizeを256MBにしていたけれど,ほとんど使ってないので,インデックスの物理容量を計算した上で全部キャッシュに乗る程度に削減した上で2週間後の経過.
まずは現在設定を確認.
10MB.
キャッシュヒット率を計算.
前回99.999987%だったのだけれど,誤差の範囲だと思います.劣化して無い.
ブロックの利用数を見る.
Key_blocks_usedが増えているけれど,圧倒的にKey_blocks_unusedが多かった分が減っているので最適化終了という感じで.
ちなみに,再起動時からのメモリ容量.まずは再起動直後.
14.5日経過後.
VSZ(仮想メモリサイズ)は起動直後も14.5日経過後もあまり変わらない.14.5日経過後のVSZが830944ブロックなので1ブロックは4096byteなので計算すると,約3.2GB.
RSS(リアルに物理メモリ上に確保しているメモリブロック数)は起動直後は33160なので130MBで,経過後は79532なので約310MB.
設定変更前はこのような感じでした.
VSZが4GBで,RSSが130MB.このRSSが増えたのは,sort_bufferを変更した別の要因ですね.
key_buffer_sizeを256MBにしていたけれど,ほとんど使ってないので,インデックスの物理容量を計算した上で全部キャッシュに乗る程度に削減した上で2週間後の経過.
まずは現在設定を確認.
mysql> SHOW VARIABLES LIKE 'key_buffer_size';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| key_buffer_size | 12582912 |
+-----------------+----------+
1 row in set (0.00 sec)
mysql>
mysql> show status like "Key_read%";
+-------------------+---------+
| Variable_name | Value |
+-------------------+---------+
| Key_read_requests | 1145304 | ←キャッシュからの読み取り要求回数
| Key_reads | 9 | ←ディスクからの読み取り要求回数
+-------------------+---------+
2 rows in set (0.00 sec)
mysql>
100 - ( ( Key_reads / Key_read_requests ) * 100 )
100 - ( ( 9 / 1145304 ) * 100 ) = 99.999214%
ブロックの利用数を見る.
mysql> show status like "Key_blocks%";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| Key_blocks_not_flushed | 0 |
| Key_blocks_unused | 8051 |
| Key_blocks_used | 2792 |
+------------------------+-------+
3 rows in set (0.00 sec)
mysql>
ちなみに,再起動時からのメモリ容量.まずは再起動直後.
ujp:~$ ps -eo vsz,rss,pid,comm|sort -nr|grep mysqld |sed 's/\// /g'| awk '{print $1" "$2" "$3" "$NF}'
827336 33160 415 mysqld
ujp:~$
14.5日経過後.
ujp:~$ ps -eo vsz,rss,pid,comm|sort -nr|grep mysqld |sed 's/\// /g'| awk '{print $1" "$2" "$3" "$NF}'
830944 79532 415 mysqld
ujp:~$
RSS(リアルに物理メモリ上に確保しているメモリブロック数)は起動直後は33160なので130MBで,経過後は79532なので約310MB.
設定変更前はこのような感じでした.
sh-3.2# ps -eo vsz,rss,pid,comm|sort -nr|grep mysqld |sed 's/\// /g'| awk '{print $1" "$2" "$3" "$NF}'
1061844 88864 30879 mysqld
sh-3.2#