データベースへの sが多く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)
この場合は735740 / (735740 + 5644038) = 0.1153
これは 11% のヒット率であり、かなり貧弱です。
マシンで非常に高い % が表示される場合は、memcached を使用するケースが少ない可能性があります。
多くの場合、MySQL のクエリ キャッシュはうまく機能します (これにはあなたのキャッシュも含まれると思います)。テーブルが更新されるたびに (キャッシュされたクエリが変更されていない行に関連している場合でも) キャッシュ エントリが無効になり、これが大きな欠点の 1 つです。ユーザーとユーザーのアプリケーションが MySQL クエリ キャッシュよりもキャッシュの有効期限について賢くできる場合、memcached を使用して行レベルに近いアイテムをキャッシュできる場合があります。
クエリのキャッシュヒット率の結果を教えてください。現時点でクエリキャッシュが無効になっていることに気付くかもしれません(!)
次のクエリを実行して、有効になっているかどうかを確認できます。
> SHOW GLOBAL VARIABLES LIKE '%cache';
そこをチェックしてhave_query_cache = YES
くださいquery_cache_size > 0
。