 |

|
はじめての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サービス系のシステム運用監視を担当するネットワークインテグレーション部に所属。システム改善やチューニングを顧客と共に考える姿勢を大事にしている。
|
|
|
|