遇到数据库隔离性问题(读已提交和可重复读、可重复读导致调息前后两次查询数据一样)

最近负责的Libor自动调息整个流程终于完成啦,在最后生产库执行的时候却出现了问题

纠结问题:

在调息(调整利息)之后前后数据肯定会出现变化,在测试库测试的时候,测试数据前后也出现了变化,在页面也是正常显示调息成功,但是在生产库使用的时候却失败了,从生产服务器上取到日志,显示 调息失败:前后调息没有变化 就觉得莫名其妙,明明测试的时候一点问题都没有,怎么到生产环境的时候就有问题了🤔
从昨天想到了今天,终于我想到了数据库的隔离级别问题,查看了测试库和生产库的数据库隔离级别

查看数据库隔离性

1.查看当前会话隔离级别
select @@tx_isolation;
2.查看系统当前隔离级别
select @@global.tx_isolation;
3.设置当前会话隔离级别
set session transaction isolatin level repeatable read;
4.设置系统当前隔离级别
set global transaction isolation level repeatable read;

发现测试库的隔离级别是读已提交,生产库确是可重复读

读已提交和可重复度的区别:

可重复读:两个事务进行数据操作他们是互不干扰的 ,事务先A进行数据查询,事务B进行一次事务修改并进行数据提交,事务A再进行一次查询,数据是不改变的

读已提交:两个事务进行数据操作,事务先A进行数据查询,事务B进行一次事务修改并进行数据提交,事务A再进行一次查询,数据是B修改后的数据

把调息前查询的数据作为事务A,调息动作作为事务B,调息之后再查询一次还是事务A,所以数据没有改变,判断出了调息前后没有变化,所以调息失败了

然后跟组长反映了这个问题,组长说生产库确实也应该改为读已提交,然后生产库改为了读已提交
再次在生产环境运行测试了一下
调息成功!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值