前提
2500万件ぐらいを初回selectすると3分ぐらいかかりますが、
二回目から3秒程度しかかかりません。
select count(*) from messages; +----------+ | count(*) | +----------+ | 25927483 | +----------+ 1 row in set (3 min 36.78 sec) 二回目以降 1 row in set (3.07 sec)
クエリキャッシュにるものかと思いましたが、
Qcache_hitsみて0でしたのでこれとは別の問題かと思いました。
なお、RESET QUERY CACHE;を実行しても2回目以降は早いかったです。
mysql> SHOW STATUS LIKE'Qcache%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 1 | | Qcache_free_memory | 1031832 | | Qcache_hits | 0 | | Qcache_inserts | 0 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 15983254 | | Qcache_queries_in_cache | 0 | | Qcache_total_blocks | 1 | +-------------------------+----------+ 8 rows in set (0.00 sec)
実現したいこと
クエリキャッシュによるものでなければなぜ二回目からクエリは早くなるか知りたいです。
試したこと
query cacheでhitされてないこと確認
flush tables実行
RESET QUERY CACHE;実行
補足情報(FW/ツールのバージョンなど)
linux-amazon
mysql5.7
RDSでもdockerコンテナでも再現
ここにより詳細な情報を記載してください。
マシン情報(DBのインストールされている)も詳細ご提示ください。
あと他に動いてるサービスとかアプリケーションとか、わかる範囲で