Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL单查询基准测试策略_Mysql_Performance - Fatal编程技术网

MySQL单查询基准测试策略

MySQL单查询基准测试策略,mysql,performance,Mysql,Performance,我的应用程序中有一个很慢的MySQL查询,需要重新编写。问题是,它只在我的生产服务器上运行得很慢,而且只有在它未被缓存时才会运行。第一次运行它需要12秒,之后的任何时间都是500毫秒 有没有一种简单的方法来测试这个查询,而不让它命中查询缓存,这样我就可以看到重构的结果 MySQL支持防止缓存单个查询。试一试 SELECT SQL_NO_CACHE field_a, field_b FROM table; 或者,您可以为当前会话解除查询缓存: SET SESSION query_cache_ty

我的应用程序中有一个很慢的MySQL查询,需要重新编写。问题是,它只在我的生产服务器上运行得很慢,而且只有在它未被缓存时才会运行。第一次运行它需要12秒,之后的任何时间都是500毫秒


有没有一种简单的方法来测试这个查询,而不让它命中查询缓存,这样我就可以看到重构的结果

MySQL支持防止缓存单个查询。试一试

SELECT SQL_NO_CACHE field_a, field_b FROM table;
或者,您可以为当前会话解除查询缓存:

SET SESSION query_cache_type = OFF;

参见

要补充约翰尼斯的好答案,我所做的是

重置查询缓存

这有一点额外的优点,即不需要对我正在执行的语句或连接进行任何更改

要做的一件小事是以某种方式更改正在执行的语句,例如在注释中放入一个随机数,因为只有当查询与以前的某个查询的字节相同时,查询才会位于缓存中