トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

MySQL_インデックス

MySQLインデックス

[MySQL]
最終更新時間:2010年02月22日 18時54分19秒

key_buffer_size

 key_buffer_sizeとは

作成したインデックスをメモリ上に維持しておくために、物理メモリ上に確保するバッファの最大値
MySQLリファレンスではしばしば「インデックス=キー」として表現されることがあるため、
インデックスのバッファって感じですね。
そのままだw

key_buffer_sizeの確認

値を確認する。(byte表現になってる)

 # mysqladmin -u root -p variables | grep key_buffer_size
 
 | key_buffer_size                 | 8388600

デフォルトは8MBとのこと。

 ブロック

MySQLではキーをブロック単位で扱うらしい。
1ブロックのサイズ(key_cache_block_size)はデフォルトでは1024MBとのこと。
つまり、key_buffer_sizeを8MBで設定し、さらにそこからブロック単位の分割が入る。

ブロック数の確認

ブロック数を確認する

 # mysqladmin -u root -p extended-status | grep Key_block
  
 | Key_blocks_not_flushed            | 0          |
 | Key_blocks_unused                 | 4389       |
 | Key_blocks_used                   | 3002       |
  • 意味
パラメータ 意味
Key_blocks_not_flushed メモリ上は変更されたが、ディスクへのフラッシュはまだされていないキャッシュのブロック数
Key_blocks_unused 未使用のブロック数
Key_blocks_used 使用しているブロック数

 インデックスを使って確認する

実際にインデックスを作成して確認する。
がんばってやってみてくだせー。

インデックスの作成

・・・

key_bufferの効果を見る

以下の値でkey_bufferの効果がわかる。

 # mysqladmimn -u root -p extended-status | grep Key_read
 
 | Key_read_requests                 | 3005280  |
 | Key_reads                         | 15418    |
  • 意味
パラメータ 意味
Key_read_requests キャッシュからの読み取りリクエスト回数
Key_reads ディスクからの読み取りリクエスト回数

つまり、Key_read_requestsの値が大きくなって、Key_readsの値ができるだけ小さいほうがディスクアクセスが少なく、キャッシュが効率的に使えているということ。
リファレンスではKey_read_requests/Key_readが100〜150以上を推奨している。