【问题标题】:Log queries which are cached and those which are not记录缓存的查询和未缓存的查询
【发布时间】:2015-11-22 17:43:37
【问题描述】:

我在我的项目中使用 PHP 和 MySQL 5.6,我想测试并记录我的哪些查询被缓存,哪些没有。

我知道如果同一个查询一次又一次地重复发送到数据库,它会从缓存中检索结果,而不是从数据库中获取。现在,这就是我要检查的内容,因为我要优化我的查询。

现在我该如何记录呢?有什么办法吗?

提前致谢。

【问题讨论】:

    标签: php mysql caching


    【解决方案1】:

    假设您最感兴趣的是哪些查询没有被缓存,哪些才是真正减慢速度的查询。您可能想利用 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)

    【讨论】:

    • 感谢您的回答和链接。引用的 SO 链接指出了缓存查询的数量,而不是查询本身。实际上我并不担心查询日志慢,因为它存储的查询执行时间高于阈值。我只是担心查询的缓存,以便我可以优化未缓存的查询并更改它们,使它们足够快。
    • 实际上也可以使用慢查询日志来记录每个处理过的查询,让您可以将它们作为一个整体浏览并确定哪些足够相似以进行更新以供使用的缓存。这就是我要去做的事情。
    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 2011-12-18
    • 2015-03-22
    • 2012-07-09
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多