Webアプリケーションで非常に遅いMySQLクエリが見つかりました。再起動時に不思議なMySQLキャッシュのケース
mysql> show variables like 'query%';
+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 0 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 8192 |
+------------------------------+---------+
でも奇妙なことは、この高速化が解消されないということです:奇妙なことは、クエリのみquery_cacheがそうのように、デフォルト(query_cache_size 0)に設定されているという事実にもかかわらず、それが実行されます最初の時間を遅くしていることですMySQLサーバが停止して再起動した後でも(私はOSXを使用しており、システム環境設定ペインを使用してこの再起動を実行します。)最初のクエリのパフォーマンスを低下させる唯一の方法は、システムをリブートすることです。
私の質問です:どのようにこれが起こっているのですか?明らかに、仕事中のキャッシュのいくつかの並べ替え、しかしどこですか?そして、それはデータベースの再起動の間、どのように持続しますか?このクエリはPHP/Apache経由で提供されている私たちのWebアプリケーションを介して処理されますが、特別な鐘や笛はありません。また、好奇心を抱くキャッシュはApacheの再起動後も持続します。
ヘルプ?
私はOSのバッファキャッシュは野生の推測ではないでしょうね。代わりに、それは正しい可能性が高いです。 HDDのキャッシュは、通常かなり小さいです。 – derobert
これが当てはまる場合、私は、システムのエクササイズ中に長時間待っていると思っていました.OSはすべてを永遠にキャッシュすることはできません。さらに、さまざまな種類のクエリがすべて同じテーブルを使用しており、レコードが非連続的なので、OSがテーブル内の特定のレコードをどのようにキャッシュするかはわからないため、セクタを吸い込んでそれで終わった。あなたが間違っていると言っているわけではありませんが、あなたが正しいなら私は非常に感銘を受けます:OSキャッシングは魔法に近づいています。 – shanusmagnus