[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 这个事务级别可能导致幻读,如果这个接口并发量很大就会导致数据错乱,但是支付接口肯定是要求数据强一致性的,我知道的是两种
方案,一是数据库默认级别改成串行化,二是方法加锁,但是这两种方法会极大地拖慢速度,一个请求没处理完,另一个请求是没办法进来处理的,请问正常工作中这种问题怎么处理的? |