■キャッシュが有効かどうかの確認
mysql> show variables like '%query_cache%'; +------------------------------+----------+ | Variable_name | Value | +------------------------------+----------+ | have_query_cache | YES | | query_cache_limit | 2097152 | | query_cache_min_res_unit | 4096 | | query_cache_size | 67108864 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | +------------------------------+----------+ 6 rows in set (1.78 sec)
have_query_cacheがNO
query_cache_sizeが0
query_cache_typeがNO
のいずれかだったらキャッシュは有効になっていない。
my-medium.cnfとか使うと、query_cache_sizeが設定されておらず、無効化されてしまうので注意。my-huge.cnfなら設定されている。
■キャッシュの状況確認
mysql> show status like 'Qcache%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 1 |クエリキャッシュ内の空きメモリブロック数 | Qcache_free_memory | 67091136 |クエリキャッシュ内の空きメモリ量。単位[byte] | Qcache_hits | 4 |キャッシュがヒットしたクエリ数 | Qcache_inserts | 1 |キャッシュに保存したクエリ数 | Qcache_lowmem_prunes | 0 |メモリ不足のためキャッシュから削除したクエリ数 | Qcache_not_cached | 98 |キャッシュされなかったクエリ数(SQL_NO_CACHEが設定された、など) | Qcache_queries_in_cache | 0 |現時点でキャッシュに保存されているクエリ数 | Qcache_total_blocks | 1 |クエリキャッシュ内の合計ブロック数 +-------------------------+----------+ 8 rows in set (0.35 sec)
これらのパラメータからわかること。
・Qcache_lowmem_prunesが多いか、Qcache_free_memoryが少なければ、クエリキャッシュ用のメモリが不足している。
・Qcache_free_blocksの値が多ければ、メモリのフラグメント化が進んでいるので、FLUSH QUERY CACHE文でデフラグメントした方がいい。
■キャッシュのリセット
mysql> reset query cache;
※詳細はMySQL全機能リファレンスのp213あたりで。
コメントを残す