乐观锁
认为很少发生并发,只在最后检查一下
怎么检查(当前读加锁,拿到最新数据,进行比对)
根据update语句返回的int比对,与预期数量一致
一条记录更新最直观最简单 判断1即可(比如审核时检查状态,再更新状态,更新条件带上原状态,返回 1 则更新成果,之前遇到并发审核 导致重复操作产生)
多条记录更新时只是 id不同且其它条件一致 比如 状态都是 0 改成 1,先查出要更新的条数,更新时使用 update when case 获取更新条数 进行比对即可
如果更新条件除了 id,还有其它条件不一致,则需要共享一把乐观锁,比如给主单加一个 乐观锁
什么时候把乐观锁标记放到页面?
数据是覆盖更新时
如果是增量更新防止事务层并发就要可以
分布式
多个节点通过网络连接
页面与接口就是分布式的
页面看到的数据不是最新的,接口存储时要进行检查,确保一致性。不一致性要求用户重试,牺牲可用性