【发布时间】:2015-11-22 17:43:37
【问题描述】:
我在我的项目中使用 PHP 和 MySQL 5.6,我想测试并记录我的哪些查询被缓存,哪些没有。
我知道如果同一个查询一次又一次地重复发送到数据库,它会从缓存中检索结果,而不是从数据库中获取。现在,这就是我要检查的内容,因为我要优化我的查询。
现在我该如何记录呢?有什么办法吗?
提前致谢。
【问题讨论】:
我在我的项目中使用 PHP 和 MySQL 5.6,我想测试并记录我的哪些查询被缓存,哪些没有。
我知道如果同一个查询一次又一次地重复发送到数据库,它会从缓存中检索结果,而不是从数据库中获取。现在,这就是我要检查的内容,因为我要优化我的查询。
现在我该如何记录呢?有什么办法吗?
提前致谢。
【问题讨论】:
假设您最感兴趣的是哪些查询没有被缓存,哪些才是真正减慢速度的查询。您可能想利用 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)
【讨论】: