SQL查询缓存

Dea*_*ean 5 mysql sql caching

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

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

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

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

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

Álv*_*lez 2

首先需要澄清两点:

  • MySQL查询缓存是服务器端功能,不存在“本地缓存”之类的东西。LOCAL您可能对命令中的关键字感到困惑FLUSH。正如文档所解释的,它只是一个别名NO_WRITE_TO_BINLOG(因此它与复制相关,“本地”意味着“此服务器”)。

  • 仅当您启用该功能并将其设置为默认值或通过提示选择加入时,MySQL 才会返回缓存的数据SQL_CACHE。根据我的经验,大多数服务器默认情况下没有它。

现在我们来回答你的问题。在MySQL 查询缓存中我们可以读到:

查询缓存在会话之间共享,因此可以发送一个客户端生成的结果集来响应另一客户端发出的相同查询。

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

我不知道你具体想测试什么。您的数据应该始终是最新的:

查询缓存不会返回过时的数据。当表被修改时,查询缓存中的任何相关条目都会被刷新。

但是,您可能想了解查询运行需要多长时间。您始终可以使用关键字选择SQL_NO_CACHE退出:

服务器不使用查询缓存。它既不检查查询缓存以查看结果是否已缓存,也不缓存查询结果。

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