事务@Transactional未提交,锁已经释放的问题
最近在接口测试中遇到的问题
在下单流程中,锁了扣减库存部分,在并发测试下会出现销量大于库存的情况。
解决办法:目前业务情况不需要加锁在下单流程中,使用mysql乐观锁就足够了,乐观锁会出现失败请求,悲观锁加上后会影响并发,目前业务不多会浪费资源。
使用mysql行锁就够了,如果代码内加锁,可以减缓mysql负担,目前没必要。
spring事务提交在整个@Transactional执行完后,由于调用链较长,mysql连接数在高并发情况下可能会被耗尽,可考虑引入队列,
对于非必须业务或者耗时业务异步处理。
另外@Transactional是基于代理模式的,spring中默认的隔离级别是取的数据库的默认级别,mysql默认级别式可重复读。
- 本文标题:事务@Transactional未提交,锁已经释放的问题
- 本文作者:HeRui
- 本文链接:https://hr2812.cn/2023/12/07/transactional-uncommit-with-lock/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!