写点什么

【YashanDB 知识库】并发 update 报错 YAS-02208 lock conflict in consistent write

作者:YashanDB
  • 2025-01-14
    广东
  • 本文字数:582 字

    阅读完需:约 2 分钟

本文内容来自 YashanDB 官网,原文内容请见https://www.yashandb.com/newsinfo/7901521.html?templateId=1718516


问题现象

业务存在并发 update,偶现报错,错误信息 YAS-02208 lock conflict in consistent write

 

问题的风险及影响

影响业务正确性判断

 

问题影响的版本

YashanDB 版本:23.2.6.100 列存 LSC

 

问题发生原因

问题发生的场景:

LSC 分区表,开启行迁移,并发更新,产生报错 YAS-02208 lock conflict in consistent write

业务应用后端会收到该错误。

 

问题分析:

1、YanshanDB 默认采用的是 inplace update 引擎,即行的 rowId 是不移动的。但一些特殊的场景会导致 rowId 发生变化。而用户在一些特殊的使用场景下会依赖 rowId,此时 rowId 是不能移动的。导致 rowId 发生变化的场景有:

闪回 DML、Shrink Table、跨分区更新

2、在分区更新场景下, 一行数据被从一个分区搬迁到另外一个分区,实际上用户数据仍然存在,在 DML 机制下,会跳过此行处理,导致数据漏更新。崖山通过 row movement 特性支持,开启 row movement 避免 lost update。

3、rowid 变更会比较大可能触发语句重启,在某一个表的 row movement 开启的场景下,在并发更新、删除的操作,其他 session 并发修改了当前 session 的 dml 的条件列,也会触发语句重启。

该问题满足这个条件,是正常现象,相应的数据已经会做修改,返回信息可作为参考提示。

动态视图 v$sql, v$sqlArea 中 restart_statements 列,统计语句重启的次数。


发布于: 刚刚阅读数: 3
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】并发update报错YAS-02208 lock conflict in consistent write_数据库_YashanDB_InfoQ写作社区