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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (9)
  • 关注 (0)
  • 查看 (891)

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

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

系统:在Linux的webhosting MySQL 4,我有访问PHPMyAdmin的权限。

提问于
用户回答回答于

在查询中使用用户定义的变量会使查询结果无法缓存。 我发现它比使用SQL_NO_CACHE要好得多。 但是你应该把变量放在变量设置不会严重影响性能的地方:

SELECT t.*
FROM thetable t, (SELECT @a:=NULL) as init;
用户回答回答于

如果你想禁用查询缓存,在你的mysql配置文件中设置'query_cache_size'为0。 如果它设置为0的话,mysql不会使用查询缓存。

用户回答回答于
SHOW VARIABLES LIKE 'query_cache_type';
SET SESSION query_cache_type = OFF;
SHOW VARIABLES LIKE 'query_cache_type';
用户回答回答于
SELECT SQL_NO_CACHE * FROM TABLE

似乎只会阻止缓存查询的结果。但是,如果您正在查询一个数据库,该数据库正在积极地与您要测试的查询一起使用,那么其他客户端可能会缓存你的查询,从而影响您的结果。

用户回答回答于

还可以运行以下命令来重置查询缓存。

RESET QUERY CACHE
用户回答回答于

配置选项:query_cache_size=0

若要在服务器启动时禁用查询缓存,请设置查询query_cache_size 系统变量大小为0。通过禁用查询缓存代码,没有明显的开销。如果您从源构建MySQL,则可以通过使用--无查询缓存选项调用Configuration,从而将查询缓存功能完全排除在服务器之外。

http://dev.mysql.com/doc/reflman/5.1/en/query-cache.html

用户回答回答于
用户回答回答于

另一个只影响当前连接的选项:

SET SESSION query_cache_type=0;
用户回答回答于

在你的查询中尝试使用SQL_NO_CACHE(mysql 5.7)。(mysql 5.6用户单击这里l)

例如:

SELECT SQL_NO_CACHE * FROM TABLE

这将停止MySQL缓存查询结果,但是要注意,其他操作系统和磁盘缓存也可能影响性能。这些东西很难去避免。

扫码关注云+社区

领取腾讯云代金券