并发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列,统计语句重启的次数。
友情链接:深圳计算科学研究院 深圳崖山科技有限公司
版权所有© 深圳崖山科技有限公司 粤ICP备2022018810号
公众号
加入技术交流群
YashanDB
崖山数据库系统YashanDB是深圳计算科学研究院自主设计研发的新型数据库管理系统,融入原创的有界计算、近似计算、并行可扩展和跨模融合计算理论,可满足金融、政企、能源等关键行业对高性能、高并发及高安全性的要求。
邮箱:info@yashandb.com
地址:广东省深圳市龙华区民宝路红山6979园区25座5-10层