残念ながら、MySQL クエリ キャッシュを操作できるオプションはほとんどありません。
このquery_cache_limit
オプションは、設定された制限を超えるクエリ結果をキャッシュしないように MySQL に指示します。この値を下げる理由:
- 一部の比較的まれなクエリが大きな結果セットを返します
- ほとんどの低速クエリは通常、小さな結果セットを返します
ステートメントの直後に配置されるキーワードは、MySQL にこの結果をキャッシュしないように指示しますSQL_NO_CACHE
。SELECT
逆に、キーワードを使用するクエリのみがキャッシュされるように、query_cache_type
サーバー オプションを に設定できます。2
SQL_CACHE
また、クエリ キャッシュが実際に完全に使用されていることを確認することをお勧めします。SHOW STATUS LIKE 'Qcache_free_memory';
この情報を提供します。クエリ キャッシュの大部分が空いている場合は、キャッシュ内の結果を再利用するにはデータが頻繁に変更されている可能性があります。また、ほとんどのクエリがよりも大きな結果セットを返すことを意味する場合もありますquery_cache_limit
(これはおそらく、不適切に設計されたクエリを示唆しています)。
他にもいくつかのヒントがあります。
ただし、これが手間をかける価値があるかどうか疑問に思っていることは間違いありません。私の意見では、クエリ キャッシュは、せいぜい、高速なデータベースの 2 番目の要素にすぎません。適切なインデックス作成が最初の要因です。さらに、多くの場合、インデックスをキャッシュするためにメモリをより適切に使用できます (最も重要なパラメーターはinnodb_buffer_pool_size
InnoDB テーブルの場合、またはkey_buffer_size
MyISAM テーブルの場合です)。