吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 457|回复: 7
收起左侧

[求助] 关于spring boot事务的@Transactional的并发问题

[复制链接]
ppgjx 发表于 2023-12-12 10:18
[Asm] 纯文本查看 复制代码
    @ApiOperation(value = "支付验证")
    @RequestMapping(value = "/verify",method = RequestMethod.POST)
    @Transactional
    public Result verify(@RequestBody @Validated IosPayVerifyReq req,@RequestHeader String uid, HttpServletRequest request, HttpServletResponse response){
            iosPayService.verify(req,uid);
            return Result.success();
    }



比如这个代码  加了@Transactional 默认异常回滚是没问题的 但是数据库是mysql 会采用默认数据库的默认级别 EPEATABLE READ 这个事务级别可能导致幻读,如果这个接口并发量很大就会导致数据错乱,但是支付接口肯定是要求数据强一致性的,我知道的是两种
方案,一是数据库默认级别改成串行化,二是方法加锁,但是这两种方法会极大地拖慢速度,一个请求没处理完,另一个请求是没办法进来处理的,请问正常工作中这种问题怎么处理的?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小火炖蘑菇 发表于 2023-12-12 10:30
你的这个业务肯定有一个唯一id,可以对这个唯一id进行校验
古道边 发表于 2023-12-12 10:46
FruitBaby 发表于 2023-12-12 10:48
waibolisi 发表于 2023-12-12 11:48

多虑了,innodb引擎做了处理了,
流泪的小白 发表于 2023-12-12 14:37
支付接口大部分都是异步的,并且有订单号全局唯一,不需要考虑那么多东西的
nwl909690050 发表于 2023-12-12 15:41
本帖最后由 nwl909690050 于 2023-12-12 15:44 编辑

参考别人的就行了,别想太多
程序_伪 发表于 2023-12-20 11:52
不锁业务,锁数据
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 16:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表