首先需要澄清两点:
MySQL查询缓存是服务器端功能,不存在“本地缓存”之类的东西。LOCAL您可能对命令中的关键字感到困惑FLUSH。正如文档所解释的,它只是一个别名NO_WRITE_TO_BINLOG(因此它与复制相关,“本地”意味着“此服务器”)。
仅当您启用该功能并将其设置为默认值或通过提示选择加入时,MySQL 才会返回缓存的数据SQL_CACHE。根据我的经验,大多数服务器默认情况下没有它。
现在我们来回答你的问题。在MySQL 查询缓存中我们可以读到:
查询缓存在会话之间共享,因此可以发送一个客户端生成的结果集来响应另一客户端发出的相同查询。
这是有道理的:无法重用存储数据的缓存没有那么有用。
我不知道你具体想测试什么。您的数据应该始终是最新的:
查询缓存不会返回过时的数据。当表被修改时,查询缓存中的任何相关条目都会被刷新。
但是,您可能想了解查询运行需要多长时间。您始终可以使用关键字选择SQL_NO_CACHE退出:
服务器不使用查询缓存。它既不检查查询缓存以查看结果是否已缓存,也不缓存查询结果。
只需考虑到,即使没有缓存,第二次运行的查询也可能运行得更快,因为部分数据段可能已经加载到 RAM 中。