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。
您也可以运行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;