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

本文内容来自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列,统计语句重启的次数。

IMG_256

posted @   YashanDB  阅读(3)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示