MySQL – 强制不使用caching来testing查询速度

我正在testingMySQL中一些查询的速度。 数据库正在caching这些查询,因此在testing这些查询的速度时,难以获得可靠的结果。

有没有办法禁用查询caching?

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

谢谢

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

例如。

SELECT SQL_NO_CACHE * FROM TABLE 

这会阻止MySQLcaching结果,但是请注意,其他操作系统和磁盘caching也可能会影响性能。 这些难以避开。

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

 SET SESSION query_cache_type=0; 

对当前date/时间的任何引用都将禁用该select的查询caching:

 SELECT *,NOW() FROM TABLE 

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

还有configuration选项:query_cache_size = 0

要在服务器启动时禁用查询caching,请将query_cache_size系统variables设置为0.通过禁用查询caching代码,没有明显的开销。 如果您从源代码构buildMySQL,则可以通过使用–without-query-cache选项调用configuration,从而完全排除查询cachingfunction。

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

您也可以运行follow命令来重置查询caching。

 RESET QUERY CACHE 

一个问题与

 SELECT SQL_NO_CACHE * FROM TABLE 

方法是,它似乎只是防止您的查询的结果被caching。 但是,如果您正在查询一个正在使用您想要testing的查询的数据库,则其他客户端可能会caching您的查询,从而影响您的结果。 我正在继续研究如何解决这个问题,如果我想出来,将编辑这个post。

我会使用以下内容:

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

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

在查询中使用用户定义的variables会使查询结果无法caching。 我发现它比使用SQL_NO_CACHE更好的指标。 但是你应该把variables放在variables设置不会严重影响性能的地方:

 SELECT t.* FROM thetable t, (SELECT @a:=NULL) as init;