文档目录

锁异常的处理

乐观锁

1.产生原因

并发操作时,在多个事务中同时写同一行数据,会产生锁异常。

2.异常信息示例

{
  "error": {
    "code": "501001",
    "message": "StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [app.Customer#1742943625031161856]"
  }
}

3.常用处理方式

  • 接口失败之后,重新调用一次接口。
  • 优化业务逻辑。如:在一个处理流程中,需要调用多个接口,每个接口属于一个业务步骤,在这种场景中,建议每个接口步骤批量集中处理,完成一个步骤后再继续另一个步骤,可以减少并发冲突。
  • 优化代码逻辑。耗时高的操作要放到保存操作之前或者之后,减少查询和更新数据之间的耗时。