mysql – SQL查询缓存

前端之家收集整理的这篇文章主要介绍了mysql – SQL查询缓存前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我知道SQL查询将使用查询缓存来接收数据,而不是重新处理所有数据.这是我想问的问题,

我使用数据库服务器,我是开发人员之一,我需要对我处理的查询进行性能测试

如果我清除查询缓存
示例使用FLUSH QUERY CACHE;或重置QUERY CACHE;,

它会影响其他开发人员,还是只清除我的本地查询缓存?

如果它会影响其他人,有没有办法在本地清除或允许我的查询不会使用查询缓存进行测试

最佳答案
两个澄清开头:

> MySQL查询缓存是服务器端功能,没有“本地缓存”这样的东西.你可能会对FLUSH命令中的LOCAL关键字感到困惑.正如docs解释的那样,它只是NO_WRITE_TO_BINLOG的别名(因此它与复制有关,“本地”意味着“此服务器”).
>如果您启用了该功能,MysqL将仅返回缓存数据,并将其设置为默认值或选择使用sql_CACHE提示.根据我的经验,大多数服务器默认没有它.

我们现在回答你的问题.在The MySQL Query Cache,我们可以阅读:

The query cache is shared among sessions,so a result set generated by
one client can be sent in response to the same query issued by another
client.

这是有道理的:无法重用存储数据的缓存不那么有用.

我不知道你想要测试什么.您的数据应始终保持新鲜:

The query cache does not return stale data. When tables are modified,
any relevant entries in the query cache are flushed.

但是,您可能想知道查询运行多长时间.您可以随时选择退出the SQL_NO_CACHE keyword

The server does not use the query cache. It neither checks the query
cache to see whether the result is already cached,nor does it cache
the query result.

只要考虑到第二次运行的查询即使没有缓存也可能运行得更快,因为部分数据段可能已经加载到RAM中.

猜你在找的MySQL相关文章