我正在测试MySQL中一些查询的速度。数据库正在缓存这些查询,这使得我在测试这些查询有多快时很难得到可靠的结果。

是否有方法禁用查询的缓存?

系统:MySQL 4在Linux主机上,我可以访问PHPMyAdmin。

谢谢


当前回答

我会使用以下方法:

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

其他回答

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

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

RESET QUERY CACHE

虽然有些答案是好的,但有一个重要的警告。

mysql查询可能被阻止被缓存,但它不会阻止你的底层os缓存磁盘访问内存。对于某些查询来说,这可能是一个严重的放缓,特别是当它们需要从旋转的磁盘中提取数据时。

因此,虽然使用上述方法很好,但每次我也会尝试使用不同的数据集/范围进行测试,这些数据可能不会从磁盘拉到磁盘/内存缓存中。

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

SELECT *,NOW() FROM TABLE

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

我会使用以下方法:

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