我正在测试MySQL中一些查询的速度.数据库正在缓存这些查询,这使我在测试这些查询的速度时难以获得可靠的结果.
有没有办法禁用查询缓存?
系统:Linux上的MySQL 4虚拟主机,我可以访问PHPMyAdmin.
谢谢
尝试在查询中使用SQL_NO_CACHE(MySQL 5.7)选项.(MySQL 5.6用户点击这里)
例如.
SELECT SQL_NO_CACHE * FROM TABLE
这将阻止MySQL缓存结果,但请注意,其他操作系统和磁盘缓存也可能会影响性能.这些更难绕行.
另一种仅影响当前连接的替代方案:
SET SESSION query_cache_type=0;
对当前日期/时间的任何引用都将禁用该选择的查询缓存:
SELECT *,NOW() FROM TABLE
请参阅"使用MySQL查询缓存的先决条件和注意事项"@ http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html
还有配置选项: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
您还可以运行follow命令来重置查询缓存.
RESET QUERY CACHE
一个问题是
SELECT SQL_NO_CACHE * FROM TABLE
方法是它似乎只是阻止查询的结果被缓存.但是,如果您要查询正在与要测试的查询一起使用的数据库,则其他客户端可能会缓存您的查询,从而影响您的结果.我正在继续研究解决这个问题的方法,如果我找到一个,我会编辑这篇文章.
我使用以下内容:
SHOW VARIABLES LIKE 'query_cache_type'; SET SESSION query_cache_type = OFF; SHOW VARIABLES LIKE 'query_cache_type';