并发update报错YAS-02208 lock conflict in consistent write

首页    知识库    常见问题    并发update报错YAS-02208 lock conflict in consistent write

问题现象

业务存在并发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

浏览量:0