TiDB Bug List=

[Critical Bug] The the update could not read the latest data if read committed is used

产品 TiDB
组件 TiDB
版本 6.0.0 6.1.1 6.1.2 6.1.3 6.1.4

Issue

https://github.com/pingcap/tidb/issues/41581

Root Cause

TiDB 使用 RC 隔离时,point get executor 读取的时间戳没有按预期刷新,取不到最新的值。使用RC隔离级别时,执行者不会获取不存在的key的悲观锁,更新可能不会对新插入的行生效。

Diagnostic Steps

如果更新结果出乎意料,例如不会更新最新值。尝试确认:

  • TiDB 版本为 v6.0、v6.1.1 -v6.1.4
  • 使用 RC 隔离级别
  • 使用并发插入和更新事务,更新/删除事务期望看到最新的插入结果使用pointGetExecutor读取

Resolution

  • 避免使用版本
    • v6.0
    • v6.1.1 -v6.1.4
  • v6.1.x版本,升级到v6.1.5版本

Workaround

  • 在update/delete语句之前使用select for update锁定row key

  • 禁用 RC 隔离级别,改用默认的 RR

1 个赞