【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列,统计语句重启的次数。


浙公网安备 33010602011771号