 |

|
はじめてのMySQLチューニング |
第6回:query_cache_sizeの違いによるパフォーマンス比較
著者:アールワークス 田中 靖之 2007/8/7
|
|
|
1 2 3 次のページ
|
 |
クエリキャッシュサイズの最適値を知る
|
MySQLサーバには、MySQLクライアントからのクエリとその実行結果をキャッシュし、次回から同じ内容のクエリが要求された場合にキャッシュから応答する、クエリキャッシュという仕組みがあります。キャッシュから応答させることによってデータベースへアクセスする負荷を軽減し、また応答速度自体の向上も狙ったものです。
デフォルト状態ではクエリキャッシュを使用しない設定になっています。以下のように現在の「クエリキャッシュに使用するメモリ量の最大値」であるquery_cache_sizeを確認してください。

(画像をクリックすると別ウィンドウに拡大図を表示します)
デフォルトでは0Mbytesに設定されていて「クエリキャッシュを使用しない」という状態であることがわかります。なおshow variablesで表示される単位はkey_buffer_size同様bytesです。
|
query_cache_sizeのチューニング
|
まずクエリキャッシュを使用するように設定するために、「/etc/my.cnf」を以下のように設定してください。
[mysqld]
max_connections=450
thread_cache=450
table_cache=450
query_cache_size = 16M
その後、MySQLのサービスを再起動します。
# /etc/init.d/mysql restart
|
クエリキャッシュに関する情報
|
MySQLが再起動したら、改めてquery_cache_sizeを確認してみましょう。今回はクエリキャッシュに関わる他の値も一緒に表示させます。

(画像をクリックすると別ウィンドウに拡大図を表示します)
すると/etc/my.cnfで設定した通り、約16Mbytesになっていることがわかります。また一緒に表示されているその他のパラメータの意味は以下の通りです。
パラメータ |
意味 |
have_query_cache |
クエリキャッシュを使用可能かどうか |
query_cache_limit |
キャッシュするクエリ結果の最大値 |
query_cache_min_res_unit |
クエリキャッシュのブロックサイズ |
query_cache_type |
OFF:結果をキャッシュしない |
ON:SELECT SQL_NO_CACHE…以外のクエリをキャッシュする |
DEMAND:SELECT SQL_CACHE…のクエリのみキャッシュする |
query_cache_wlock_invalidate |
書込みロック獲得時に、ロックしたテーブルに関するクエリキャッシュを無効にするかどうか |
今回はこれらのパラメータに関してはチューニングを行いませんが、例えばクエリ結果がかなり大きい場合はquery_cache_limitを大きくしたり、逆に小さい場合にはquery_cache_min_res_unitを小さくするなどの手法があります。
|
1 2 3 次のページ
|

|
|

|
著者プロフィール
株式会社アールワークス 田中 靖之
ネットワークインテグレーション部 主にWebサービス系のシステム運用監視を担当するネットワークインテグレーション部に所属。システム改善やチューニングを顧客と共に考える姿勢を大事にしている。
|
|
|
|