- June 29, 2007 4:53 PM
クエリ キャッシュは SELECT クエリとその結果を格納して、頻繁に要求されるデータのパフォーマンスを向上する。またテーブルの変更によって、関連するすべてのクエリがキャッシュからフラッシュされるので、データは常に新しいハズ。
クエリはバイトごとに一致している必要があるので、大文字小文字
query_cache_size
デフォルトは 0 (オフの意味)
キャッシュと結果用に予約するサイズ (バイト) を設定
query_cache_type=OFF|ON|DEMAND (または 0|1|2)
キャッシュの動作を設定
ON の場合は、SELECT SQL_NO_CACHE ... 構文を使用しない限りデフォルトでキャッシュを使用
DEMAND の場合は、SELECT SQL_CACHE ... 構文を使用しない限りデフォルトでキャッシュを使用しない
グローバル値によって接続のデフォルト値が決まるが、個々のクライアントセッションでも設定できる
FLUSH QUERY CACHE は、クエリを削除することなくキャッシュのフラグメント化を解消する
キャッシュは次のコマンドでリセットできる
query_cache_limit 変数を使用して、キャッシュに入れるクエリの最大サイズを設定できる
query_cache_min_res_unit (ブロック サイズ) の設定がクエリ キャッシュのフラグメント化に役立つ
デフォルトは 4 KB
キャッシュに入れられたほとんどのクエリの結果セットが小さい場合は、小さくする必要がある。ほとんどの結果セットが大きい場合は大きくする必要がある
Qcache_free_blocks と Qcache_lowmem_prunes を使用して、空きブロックが残っているにもかかわらずキャッシュに入れられたクエリが切り捨てられるかどうかを確認する
Qcache_hits を Com_select と比較して、クエリーキャッシュのヒット率を求めることができる
クエリはバイトごとに一致している必要があるので、大文字小文字
query_cache_size
デフォルトは 0 (オフの意味)
キャッシュと結果用に予約するサイズ (バイト) を設定
query_cache_type=OFF|ON|DEMAND (または 0|1|2)
キャッシュの動作を設定
ON の場合は、SELECT SQL_NO_CACHE ... 構文を使用しない限りデフォルトでキャッシュを使用
DEMAND の場合は、SELECT SQL_CACHE ... 構文を使用しない限りデフォルトでキャッシュを使用しない
グローバル値によって接続のデフォルト値が決まるが、個々のクライアントセッションでも設定できる
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+--------+
| Variable_name | Value |
+-------------------------+--------+
| Qcache_free_blocks | 36 | 空きブロック数
| Qcache_free_memory | 138488 | 空きメモリのサイズ (バイト)
| Qcache_hits | 79570 | クエリのヒット数
| Qcache_inserts | 27087 | キャッシュに入れられたクエリの数
| Qcache_lowmem_prunes | 3114 | メモリが小さいために削除された数
| Qcache_not_cached | 22989 | キャッシュに入れられなかったクエリの数
| Qcache_queries_in_cache | 415 | キャッシュ内のクエリの数
| Qcache_total_blocks | 912 | ブロックの領域の合計
+-------------------------+--------+
FLUSH QUERY CACHE は、クエリを削除することなくキャッシュのフラグメント化を解消する
キャッシュは次のコマンドでリセットできる
- RESET QUERY CACHE
- FLUSH TABLES
- mysqld の再起動も使用できる
query_cache_limit 変数を使用して、キャッシュに入れるクエリの最大サイズを設定できる
query_cache_min_res_unit (ブロック サイズ) の設定がクエリ キャッシュのフラグメント化に役立つ
デフォルトは 4 KB
キャッシュに入れられたほとんどのクエリの結果セットが小さい場合は、小さくする必要がある。ほとんどの結果セットが大きい場合は大きくする必要がある
Qcache_free_blocks と Qcache_lowmem_prunes を使用して、空きブロックが残っているにもかかわらずキャッシュに入れられたクエリが切り捨てられるかどうかを確認する
Qcache_hits を Com_select と比較して、クエリーキャッシュのヒット率を求めることができる