2011-02-19 12 views
0

私はウェブサイトのゲームを運営しています。私は、ゲームが稼働している年にクエリキャッシュをリセットするなど、何も触れていません。テーブルに応じて5000〜1000万行程度の作業をしています。すべてが常に更新され、テーブルに物事が挿入されています。私が正しく理解していると、すべての挿入または更新によってそのテーブルのキャッシュがクリアされますか?それが私の検索しているオンラインで見つかったものですが、それが本当かどうか、または定期的にキャッシュをリセットする必要があるかどうかはわかりません。質問キャッシュを定期的にリセットする必要がありますか?

1か月前に発生したクエリは、現在はもう役に立ちません。だから、それらのクエリ結果を格納しているなら、誰もその同じ正確なクエリを再度実行する可能性がないので、それは完全に無益です。

私は "Qcache%の" LIKE SHOWのSTATUSを実行し、その結果は以下のとおりであった:

Qcache_free_memory 23490288

Qcache_hits 253269763

Qcache_inserts 368937684

Qcache_lowmem_prunes 57410566

Qcache_free_blocks 6941

Qcache_not_cached 9872266

Qcache_queries_in_cache 35275

Qcache_total_blocks 84877

私は本当にこれらのものは、何を意味するのか分からないか、彼らは私がキャッシュをリセットする必要があるかどうかを決定する際にも、役立つかどうか。前もって感謝します。

答えて

0

このマニュアルはあなたに嘘をつきませんでした。テーブル内のデータを変更するクエリは、そのテーブルを参照するキャッシュエントリを無効にします。キャッシュを手動でフラッシュする必要はありません。

データが頻繁に更新され、クエリがキャッシュ内に残らないようにするか、同じクエリを実行してキャッシュするのはあまり役に立ちませんが、メモリとCPU時間のチェックを無駄にしてしまいますINSERTおよびUPDATEクエリごとにキャッシュエントリを無効にします。クエリキャッシュをオフにすると、実際にパフォーマンスが向上します。

+0

選択したテーブルだけでクエリキャッシュをオフにする方法はありますか?私のテーブルの90%は頻繁に更新されるので、クエリキャッシュは必要ありませんが、他の10%は決して更新されない可能性があります。そのため、クエリキャッシュが役に立ちます。 – Samir

+0

最初に[マニュアルを読む](http://dev.mysql.com/doc/refman/5.1/en/query-cache-configuration.html)、それは非常に分かりやすいレベルで書かれています。第2に、クエリキャッシュは、オン、オフ、およびオンデマンドの3つのモードのみで動作することができる。オンデマンドに設定した場合は、発行時にキャッシュするクエリーを明示的に指定する必要があります。 'SELECT SQL_CACHE columns ... '。 「これらのテーブルにはオン」モードはありません。 –

+0

助けてくれてありがとう – Samir