クエリキャッシュについて

■キャッシュが有効かどうかの確認

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あたりで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です