2015-11-22 42 views
4

我在为我的项目使用PHP和MySQL 5.6,我想测试并记录哪些查询被缓存,哪些不是。缓存的日志查询和那些不是的日志查询

我知道这样一个事实,即如果相同的查询一次又一次地发送到数据库,它会从缓存中检索结果,而不是从数据库中读取数据。现在,这就是我想检查的原因,我想优化我的查询。

现在我怎么登录呢?有什么办法吗?

在此先感谢。

回答

2

假设你最关心哪些查询没有被缓存,哪些是真正放慢速度的问题。您可能想要使用MySQL慢速查询日志来发现它们并使用EXPLAIN分别优化每一个。

https://dev.mysql.com/doc/refman/5.6/en/slow-query-log.html

然而这样的回答是“这是不是你要找的机器人”绝招:它不直接但回答你的问题,但让你在正确的轨道上。据我所知,与大多数缓存层一样,MySQL查询缓存通过基于散列的密钥存储结果,使得直接查询 - 散列关联相当痛苦:How to list cached queries in MySQL? (Qcache_queries_in_cache)

+1

感谢您的答案和链接。所谓链接简称指出缓存的查询的数量,但不能查询本身.. 其实我并不担心慢查询日志导致它有存储服用上述阈值EXEC时间查询。我只是担心查询,以便我可以优化未缓存查询和改变他们,使他们有足够快的高速缓存。 –

+0

也可以实际利用慢查询日志中记录每一个查询处理,使您可以浏览所有这些作为一个整体,并确定哪些是相似,足以进行更新,以充分利用缓存。我就是这么想的。 – Calimero