关于分布式锁技术落地到应用的感想

应用场景 某一商品的秒杀创建订单扣减库存的sql

<update id="descItemsSpecStock">
    UPDATE
    items_spec
    SET
    stock = stock - #{buyCount}
    WHERE
    id = #{itemSpecId}
    AND
    stock  >= #{buyCount}
</update>

考虑未加分布式锁并发场景下,数据库中执行扣减库存sql,由于表的行锁,并发更新变成串行执行update sql。此时会导致大量的对同一条数据的update语句堆积,数据库压力增高。这意味着,大量的事务没办法及时提交,进而导致应用会一直占用数据库连接而不能及时释放。数据库链接资源是有限的,从而导致了一系列问题。

如何解决?把数据库的压力转移到应用层?使用分布式锁。

考虑加入分布式锁的并发场景,对同一件商品的扣减库存时加上分布式锁,此时,获得锁的去执行update sql,未获得锁的应用则进入阻塞状态。此时,数据没有产生update 语句的堆积,数据库压力减小。事务和数据库链接也能得到及时的提交和释放

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值