TOP
>
サーバ構築・運用
> key_buffer_sizeとは
はじめてのMySQLチューニング
第5回:key_buffer_sizeの違いによるパフォーマンス比較
著者:
アールワークス 田中 靖之
2007/7/30
1
2
3
次のページ
key_buffer_sizeとは
key_buffer_sizeとは、「インデックスブロック用に使用されるバッファメモリの最大値」をあらわします。MySQLのリファレンスマニュアルでは、しばしば「インデックス=キー」として表現されています。つまり「作成したインデックスをメモリ上に維持しておくために、物理メモリ上に確保するバッファの最大値」ということになります。
key_buffer_sizeはデフォルト状態では以下の通り約8Mbytesに設定されています。
(画像をクリックすると別ウィンドウに拡大図を表示します)
なおshow variablesで表示される単位はbytesです。
現在使用されているブロック数の確認
MySQLでは、キーをブロックという単位で扱います。1ブロックのサイズ(key_cache_block_size)はデフォルトで1024bytesです。現在のキーバッファの使用量は、以下のようにして確認できます。
(画像をクリックすると別ウィンドウに拡大図を表示します)
各項目は以下の通りの意味を持ちます。
パラメータ
意味
Key_blocks_not_flushed
変更されたが、ディスクへのフラッシュはまだされていないキーキャッシュのキーブロック
Key_blocks_unused
キーキャッシュの未使用ブロックの数
Key_blocks_used
キーキャッシュのブロックの使用数。この値は、これまで同時使用したブロックの最大値
表1:各項目の意味
つまりこの場合、キーバッファは7248ブロックが空いていて(Key_blocks_unused)、これまでに1ブロックも使われていない(Key_blocks_used)ことがわかります。今のところインデックスを1つも作成していないのですから、この結果は当然です。
インデックスを作成する
key_buffer_sizeを検討するには、まずはじめにインデックスを作成しなければはじまりません。そのためにはcreate indexコマンドで以下のようにpassカラムのインデックスを作成します。その後、show indexコマンドで作成したインデックスを確認することができます。
(画像をクリックすると別ウィンドウに拡大図を表示します)
「Column_name」がpassとなっているものが作成したインデックスで、正常に作成されたことがわかります。しかしそれ以外にusernameというインデックスもあります。これは、http_authテーブル作成時にusernameを主キーに指定したため、暗黙的に生成されたインデックスです。また最後にKey_block_usedを確認すると、2928ブロックが一時的に使用されたということがわかります。
同様にして、uidやgidについてもindexを作成しておいてください。
1
2
3
次のページ
著者プロフィール
株式会社アールワークス 田中 靖之
ネットワークインテグレーション部
主にWebサービス系のシステム運用監視を担当するネットワークインテグレーション部に所属。システム改善やチューニングを顧客と共に考える姿勢を大事にしている。
INDEX
第5回:key_buffer_sizeの違いによるパフォーマンス比較
key_buffer_sizeとは
key_bufferの効果を確認する
key_buffer_sizeデチューン後の測定結果