SELECT
が多く、データベースへの書き込みが少ない場合、MySQLのクエリキャッシュはデータをキャッシュするのにかなり良い仕事をするはずです。
クエリキャッシュは、次のことをしようと取り組んでいる方法を効果的に表示するには:
> SHOW GLOBAL STATUS LIKE 'Qcache_hits';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| Qcache_hits | 735740 |
+---------------+--------+
1 row in set (0.00 sec)
> SHOW GLOBAL STATUS LIKE 'Com_select';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Com_select | 5644038 |
+---------------+---------+
1 row in set (0.00 sec)
この場合、ヒット率の計算にQcache_hits/(Qcache_hits + Com_select)
を見つけるには、それは11%のヒット率です735740/(735740 + 5644038) = 0.1153
ですかなり貧しいです。
マシンの%がはるかに高い場合は、memcachedを使用するケースが少なくなる可能性があります。
多くの場合、MySQLのクエリキャッシュはうまく機能します(これにはあなた自身が含まれていると思われます)。キャッシュエントリは、キャッシュされたクエリが変更されていない行に関連する場合でも、テーブルが更新されるたびに無効化されますが、これは大きな欠点です。あなたとあなたのアプリケーションがMySQLのクエリキャッシュよりもキャッシュの有効期限を賢くすることができるときに、memcachedを使用して行レベルに近い項目をキャッシュすることができます。
質問キャッシュヒット率の結果を教えてください。あなたも、あなたは、現時点では無効になっクエリキャッシュを持っていることがあります
あなたはそれが次のクエリを実行することによって有効になっているかどうかを確認することができます(!):
> SHOW GLOBAL VARIABLES LIKE '%cache';
チェックhave_query_cache = YES
ため、そこでquery_cache_size > 0
。
負荷テスト:私はあなたにこの小さなネットワークを貸すことができます。私はあまりにも多くを言った。 – Louis
時には、ツールを組み込んだもっと強力なものが欲しい。 –