その投稿では、InnoDBがInnoDBバッファープールとクエリキャッシュの間でどのように変更をマイクロ管理するかについて説明しました。
クエリキャッシュを使用しない
最も簡単な答えは、クエリキャッシュを無効にすることですが、落とし穴があります。両方を設定する必要があります query_cache_size
および
query_cache_typeを設定しない場合a> ゼロ(0)まで、変更のマイクロ管理は引き続き行われます。これは、MySQLのパラグラフ8によって確認されます。ドキュメント「クエリキャッシュ構成」 言う
クエリキャッシュの使用
本当にクエリキャッシュを使用したい場合は、データを調べる必要があります。基本的に、結果のサイズを知る必要があります。次に、query_cache_limit
を設定します。 および
別の方法として、クエリキャッシュをグローバルに有効にしますが、段落9 :
実際の質問
クエリキャッシュ、InnoDBバッファプール、接続スレッドごと(私の投稿 https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection/ 16973#16973 )、およびOSはすべてRAMをめぐって競合します。
クエリキャッシュとInnoDBバッファプールだけを見るときは、MySQLが数日または数週間実行された後、InnoDBバッファプールの空き容量を確認する必要があります。
これをクエリで実行できます
SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';
これにより、InnoDBバッファープールをどれだけ下げることができるかがわかります。次に、そのサイズだけクエリキャッシュを増やすことができます。このクエリが1024未満を返す場合は、おそらく努力する価値はありません。 RAMから追加のスペースを取得するか、クエリキャッシュを無効にするだけです。