2

Linux上で実行されているMySQLサーバーが1つあります。重要なアプリがいくつかあり、querycacheを可能な限り高く設定しています。重要ではないデータベースもいくつかあります(wordpressなど)。

質問:

  1. データベースレベルでクエリキャッシュを微調整することは可能ですか?
  2. テーブルごとにクエリキャッシュを微調整することは可能ですか?
  3. やる価値さえありますか?重要なテーブルに微調整されたクエリキャッシュがある場合でも、重要でないデータにアクセスするときにデータベースが途切れることはありますか?

前もって感謝します

4

1 に答える 1

8

残念ながら、MySQL クエリ キャッシュを操作できるオプションはほとんどありません。

このquery_cache_limitオプションは、設定された制限を超えるクエリ結果をキャッシュしないように MySQL に指示します。この値を下げる理由:

  • 一部の比較的まれなクエリが大きな結果セットを返します
  • ほとんどの低速クエリは通常、小さな結果セットを返します

ステートメントの直後に配置されるキーワードは、MySQL にこの結果をキャッシュしないように指示しますSQL_NO_CACHESELECT

逆に、キーワードを使用するクエリのみがキャッシュされるように、query_cache_typeサーバー オプションを に設定できます。2SQL_CACHE

また、クエリ キャッシュが実際に完全に使用されていることを確認することをお勧めします。SHOW STATUS LIKE 'Qcache_free_memory';この情報を提供します。クエリ キャッシュの大部分が空いている場合は、キャッシュ内の結果を再利用するにはデータが頻繁に変更されている可能性があります。また、ほとんどのクエリがよりも大きな結果セットを返すことを意味する場合もありますquery_cache_limit(これはおそらく、不適切に設計されたクエリを示唆しています)。

他にもいくつかのヒントがあります

ただし、これが手間をかける価値があるかどうか疑問に思っていることは間違いありません。私の意見では、クエリ キャッシュは、せいぜい、高速なデータベースの 2 番目の要素にすぎません。適切なインデックス作成が最初の要因です。さらに、多くの場合、インデックスをキャッシュするためにメモリをより適切に使用できます (最も重要なパラメーターはinnodb_buffer_pool_sizeInnoDB テーブルの場合、またはkey_buffer_sizeMyISAM テーブルの場合です)。

于 2012-06-18T22:40:00.440 に答える