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

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

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

谢谢


当前回答

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

SET SESSION query_cache_type=0;

其他回答

还有一个配置选项:query_cache_size=0

要在服务器启动时禁用查询缓存,请将系统变量query_cache_size设置为0。通过禁用查询缓存代码,不会产生明显的开销。如果从源代码构建MySQL,则可以通过使用——without-query-cache选项调用configure,将查询缓存功能完全排除在服务器之外。

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

您必须更改SQL字符串。因为SQL字符串是一个缓存键。 例如,为SQL注释添加时间戳。

PHP函数:

function db_RunSQL($SQL, $NoCacheMode=false)
{
$SQL = (($NoCacheMode) ? '/*'.time().'*/ ' : '') . $SQL;
return mysqli_query(db_SavedConnect(), $SQL);
}

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

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

RESET QUERY CACHE

我会使用以下方法:

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