UJP - MySQLのkey_buffer_sizeを考える

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

  • カテゴリ サイト運営 の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - MySQLのkey_buffer_sizeを考える

MySQLのkey_buffer_sizeを考える

カテゴリ : 
サイト運営
ブロガー : 
ujpblog 2016/7/31 23:19
 インデックス検索されている場合は,インデックスはkey_buffer_sizeで指定されたメモリに展開されるので,最適な容量を考えてみる.
 ということで,まず,全てのインデックスがメモリに乗るのかどうかを調べるため,インデックスのサイズを計算してみる.

mysql> select sum(index_length) from information_schema.tables where table_schema=database();
+-------------------+
| sum(index_length) |
+-------------------+
|           6331392 |
+-------------------+
1 row in set (0.01 sec)

mysql>
 このSQLは実行した時に選択されているデータベースに対してのインデックスサイズの総量です.単位はバイト数.これだと6MBなので余裕だな...
 現在使っているKey_bufferを確認してみる.
mysql> show status like "Key_blocks%";
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| Key_blocks_not_flushed | 0      |
| Key_blocks_unused      | 229578 |
| Key_blocks_used        | 2382   |
+------------------------+--------+
3 rows in set (0.01 sec)

mysql>
 1ブロックはデフォルトでは1024バイトなのだけれど一応確認してみる.
mysql> SHOW VARIABLES LIKE 'key_cache_block_size';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| key_cache_block_size | 1024  |
+----------------------+-------+
1 row in set (0.00 sec)

mysql>
 2382×1024=2,439,168byte=2.3MBでした.
 現在の設定はこんな感じ.
mysql> SHOW VARIABLES LIKE 'key_buffer_size';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| key_buffer_size | 268435456 |
+-----------------+-----------+
1 row in set (0.00 sec)

mysql>
 256MBなので,これはメモリの無駄遣い.減らしましょう.10MBもあれば十分か.
 キーのキャッシュヒット率を計算してみる.
mysql> show status like "Key_read%";
+-------------------+---------+
| Variable_name     | Value   |
+-------------------+---------+
| Key_read_requests | 7587589 | ←キャッシュからの読み取り要求回数
| Key_reads         | 242     | ←ディスクからの読み取り要求回数
+-------------------+---------+
2 rows in set (0.00 sec)

mysql>
 キャッシュヒット率は次の式で計算.
100 - ( ( Key_reads / Key_read_requests ) * 100 )
 あてはめてみる.
100 - ( ( 242 / 7587589) * 100 ) = 99.999987%
 そりゃぁもう割り当てメモリ多すぎなので当然と言えば当然の結果.
 今回,256MBから12MBに変更してみる.

トラックバック


広告スペース
Google