我在AWS RDS中运行了一个MySQL 5.6 DB。我正在改进我的一些索引。我在本地实例上使用FLUSH QUERY CACHE
来清除执行此类开发时的查询缓存。
我有一个查询,第一次调用它需要10秒,之后每次需要0.2秒。我期待查询的FLUSH QUERY CACHE
次调用需要10秒,但它仍然只需要0.2秒。
这个stackoverflow question指出在Ubuntu上我需要在清除查询缓存之前清除memory disc caching。遗憾的是,AWS RDS不允许终端访问RDS实例。
如何在AWS RDS中运行的MySQL 5.6 DB上清除查询缓存?
答案 0 :(得分:6)
FLUSH QUERY CACHE
不会清除MySQL中的查询缓存。
您可以对查询缓存进行碎片整理,以便通过
FLUSH QUERY CACHE
语句更好地利用其内存。该语句不会从缓存中删除任何查询。
RESET QUERY CACHE
语句从查询缓存中删除所有查询结果。FLUSH TABLES
语句也可以这样做。- http://dev.mysql.com/doc/refman/5.6/en/query-cache-status-and-maintenance.html
此外,链接的问题与查询缓存无关。查询缓存使用的内存在启动时分配,永远不会返回给系统。查询缓存不受文件支持,因此不会因刷新到OS文件系统缓存而受到影响。
最后,我不确定为什么在索引维护过程中,通常需要清除查询缓存。对基准查询进行基准测试时,使用SELECT SQL_NO_CACHE ...
将导致查询不被查询缓存服务。