電子書籍の厳選無料作品が豊富!

MySQL 5.0.77を使用しています。
以下の通り、クエリーキャッシュを使用する設定にしているにも関わらず、全くキャッシュされません。
原因に心当たりのある方はいらっしゃいますか?

+------------------------------+------------+
| Variable_name | Value |
+------------------------------+------------+
| have_query_cache | YES |
| query_cache_limit | 102400 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 102400 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| version | 5.0.77-log |
+------------------------------+------------+

| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Qcache_free_blocks | 1 |
| Qcache_free_memory | 93832 |
| Qcache_hits | 0 |
| Qcache_inserts | 0 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 6378114 |
| Qcache_queries_in_cache | 0 |
| Qcache_total_blocks | 1 |

A 回答 (3件)

phpに詳しくなく、MySQLにどういう要求が出るのか分かりませんが、MySQLのマニュアルのクエリキャッシュの説明で、次のような記述がありました。


http://dev.mysql.com/doc/refman/5.1/ja/query-cac …


注意:クエリ キャッシュは、サーバ サイドの準備されたステートメント (準備文) には使用できません。サーバ サイドの準備文がある場合には、クエリ キャッシュの条件を満たしません。


prepare + execute での実行は、対象外と言っているようです。

「え?なぜ?」とも思い、英語版ではどう書かれているのか確認してみました。
http://dev.mysql.com/doc/refman/5.1/en/query-cac …


Note

As of MySQL 5.1.17, the query cache is used for prepared statements under the conditions described in Section 7.5.5.1, “How the Query Cache Operates”. Before 5.1.17, the query cache is not used for prepared statements.


意味は分かりますよね?
    • good
    • 0
この回答へのお礼

5.1へのバージョンアップと現状維持で、天秤にかけてみます。
ありがとうございました。

お礼日時:2009/12/02 10:22

当方、MySQL 5.1.36で、MySQL Command Line Clientで確認してみましたが、クエリキャッシュは利用されているよう(SHOW STATUSでの結果が変わっていく)です。



提示された”限定的な具体的な情報”の範囲では、問題ないようです。

>クエリは、シンプルなものですよ。副問い合わせなどは使用してません。

・シンプルかどうか
・シンプルであっても、MySQLのクエリキャッシュを使用できる条件を満たしているのか

といったことは、具体的な提示がないのでアドバイスしようがありませんから、もう一度、見直してもらうしかないです。
例えば、シンプルであっても、
・大文字と小文字
・空白の数
・関数の使用
といったことでも違うものとして扱われます。

設定はどこでやっていて(SETコマンドでの動的変更の有無など)、その結果はどのタイミングで確認しているのでしょうか?
キャッシュに入らないということ自体、どんなSELECT文なのでしょうかね?
また、MySQL Command Line Client、phpMyAdmin等でやってみて、どこに問題があるか絞ってみては?
    • good
    • 0

細かく見ていませんが、どういうSQLを、どういう方法で実行しました?

この回答への補足

クエリは、シンプルなものですよ。副問い合わせなどは使用してません。
Apache → PHP → MySQL
WEBサイトにアクセスがある度、同一のクエリが何度も実行されます。

補足日時:2009/11/27 22:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!