我已经在我的服务器上启用了mysql slow query来记录超过5秒的查询。当我从mysql>运行相同的查询时,报告超过10秒的查询所用时间不到1秒。为什么会这样呢?
TIA,-peter
发布于 2012-05-10 00:31:02
这可能是由于缓存造成的。
数据库在内存中缓存一些数据,而将大部分数据留在磁盘上。当sql查询获取数据时,将加载该数据,然后将其保存在内存中,以防在不久的将来再次被请求。最终,如果该数据不再被请求,它将被从以后的查询进入缓存的新数据覆盖到缓存中。
在一些系统上,硬盘本身有额外的缓存--从磁盘获取的数据可能由磁盘控制器保存在缓存中。这是因为最近从磁盘获取的数据可能会再次获取。
因此,一旦从查询提示符请求了数据,数据就会被缓存--可能是由磁盘控制器和数据库本身缓存的。
在您的应用程序中,这不太可能发生,因为新用户在不同的时间到来并访问他们自己的数据(这些数据不太可能在他们到达之前被缓存)。
提高数据库速度的最常见方法之一是增加服务器可用的内存量,以便可以缓存更多的数据。
有关更多信息,请阅读MySQL's docs on the MySQL Query Cache中的一些内容
https://stackoverflow.com/questions/10520139
复制相似问题