并发问题的两种解决方法

并发方案

悲观锁:
对关键数据的查询 进行加锁。
(select * from df_goods_sku where id = 17 for update;)

事务结束,释放 锁。

乐观锁:
对关键数据的查询 不加锁。
在修改关键数据时 进行判断。
判断 修改关键数据时数据库中的记录 和 查询关键数据时数据库中的记录 是否一致。
在修改 关键数据的记录时,如果 关键数据的记录 发生了改变,放弃 对关键数据的记录 做修改。
update df_goods_sku set stock=new_stock sales=new_sales
where id=sku_id and stock=origin_stock

你可能感兴趣的:(并发问题的两种解决方法)