当前位置:  开发笔记 > 编程语言 > 正文

MySQL - 强制不使用缓存来测试查询速度

如何解决《MySQL-强制不使用缓存来测试查询速度》经验,为你挑选了7个好方法。

我正在测试MySQL中一些查询的速度.数据库正在缓存这些查询,这使我在测试这些查询的速度时难以获得可靠的结果.

有没有办法禁用查询缓存?

系统:Linux上的MySQL 4虚拟主机,我可以访问PHPMyAdmin.

谢谢



1> Jarod Elliot..:

尝试在查询中使用SQL_NO_CACHE(MySQL 5.7)选项.(MySQL 5.6用户点击这里)

例如.

SELECT SQL_NO_CACHE * FROM TABLE

这将阻止MySQL缓存结果,但请注意,其他操作系统和磁盘缓存也可能会影响性能.这些更难绕行.


[文档](http://dev.mysql.com/doc/refman/5.0/en/query-cache-in-select.html)
关于mysql查询缓存的一篇很好的文章.如何设置和查看正在运行的缓存!值得一读.http://www.databasejournal.com/features/mysql/article.php/3110171/MySQLs-Query-Cache.htm
@Brett在11年回顾SalmanPK的评论.该doc页面实际上是4个句子并直接回答您的问题.如果将来删除该页面:"它既不检查查询缓存,也不检查结果是否已缓存,也不缓存查询结果."
这会阻止它缓存结果,但它是否也会阻止*使用*缓存?

2> John Carter..:

另一种仅影响当前连接的替代方案:

SET SESSION query_cache_type=0;



3> 小智..:

对当前日期/时间的任何引用都将禁用该选择的查询缓存:

SELECT *,NOW() FROM TABLE

请参阅"使用MySQL查询缓存的先决条件和注意事项"@ http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html



4> barbushin..:

还有配置选项:query_cache_size = 0

要在服务器启动时禁用查询缓存,请将query_cache_size系统变量设置为0.通过禁用查询缓存代码,没有明显的开销.如果从源代码构建MySQL,则可以通过使用--without-query-cache选项调用configure来完全从服务器中排除查询缓存功能.

请参阅http://dev.mysql.com/doc/refman/5.1/en/query-cache.html



5> 小智..:

您还可以运行follow命令来重置查询缓存.

RESET QUERY CACHE


这可能是矫枉过正的......理想情况下,您只希望MySQL暂时忽略缓存.
您还需要特殊权限.

6> wbharding..:

一个问题是

SELECT SQL_NO_CACHE * FROM TABLE

方法是它似乎只是阻止查询的结果被缓存.但是,如果您要查询正在与要测试的查询一起使用的数据库,则其他客户端可能会缓存您的查询,从而影响您的结果.我正在继续研究解决这个问题的方法,如果我找到一个,我会编辑这篇文章.



7> 小智..:

我使用以下内容:

SHOW VARIABLES LIKE 'query_cache_type';
SET SESSION query_cache_type = OFF;
SHOW VARIABLES LIKE 'query_cache_type';

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有