【问题标题】:MySQL writes probably not updating query cacheMySQL 写入可能不会更新查询缓存
【发布时间】:2019-01-10 14:03:30
【问题描述】:

我有一个奇怪的问题。

在 MySQL 5.6 上,我启用了查询缓存,设置如下。

缓存的想法是,每当发生写入操作时,记录就会失效(删除)并在下次读取时创建。

但是,我确实经常收到过时的数据,当我更改查询中的某些字符时,它会得到更正。

我知道关闭查询缓存当然是一个可行的选项,但我在与查询缓存相关的设置方面做错了吗?

我阅读了有关直写缓存的文章,但在 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


【解决方案1】:

query_cache_wlock_invalidate 设置为ON 有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多