我在我的网络应用程序中发现了一个非常慢的MySQL查询。奇怪的是,查询在第一次执行时只是很慢,尽管query_cache被设置为默认值(query_cache_size 0),如下所示:
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 |
+------------------------------+---------+
甚至更奇怪的是,即使在MySQL服务器停止并重新启动之后,这种加速仍然存在(我正在使用OSX,并使用系统首选项窗格执行此重新启动。)我可以重新创建穷人的唯一方法初始查询的性能是通过重新启动系统。
所以我的问题是:这是怎么回事?工作中显然有某种缓存,但在哪里呢?它如何在数据库重启后持续存在?这个查询是通过我们的网络应用程序调解的,这个应用程序来自PHP / Apache,但没有额外的花哨和口哨,并且奇怪的缓存在Apache重启时也会持续存在。
帮助?
答案 0 :(得分:2)
狂野猜测是操作系统或硬盘,缓存文件