【发布时间】:2019-01-10 14:03:30
【问题描述】:
我有一个奇怪的问题。
缓存的想法是,每当发生写入操作时,记录就会失效(删除)并在下次读取时创建。
但是,我确实经常收到过时的数据,当我更改查询中的某些字符时,它会得到更正。
我知道关闭查询缓存当然是一个可行的选项,但我在与查询缓存相关的设置方面做错了吗?
我阅读了有关直写缓存的文章,但在 MySQL 中找不到它的任何默认实现,也没有明确提及任何有关失效的地方。
另一个重要的一点是 - 我在任何时间点都有很多连接对象(几十个),我的问题是否可能是因为连接级别的一些缓存(如果可能)而不是全局缓存?
编辑 - 不是重复的问题
What is the use of "query_cache_wlock_invalidate" in MySql Query Cache?
因为这里的问题是,即使在写入发生很长时间后,缓存的值也会被返回,因为预期写入无论如何都会导致缓存失效,因为那时锁也会被放弃。
编辑 -
query_cache_wlock_invalidate 确实有效。问题在于写入时间戳的错误记录导致无效结论。
【问题讨论】:
-
不是stackoverflow.com/questions/38320261/… 的重复问题,因为这里的问题是即使在写入发生很长时间后,缓存值也会返回,因为预期写入会导致缓存失效,因为到那时,锁也会被放弃。
-
对不起,用户错误比 MySQL 查询缓存中的主要错误更容易相信。请提供您断言的证据,然后启用
query_cache_wlock_invalidate并证明问题再次出现。 -
肯定会启用
query_cache_wlock_invalidate并在此处分享更新。
标签: mysql database mysql-5.6 query-cache