最近负责的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,所以数据没有改变,判断出了调息前后没有变化,所以调息失败了
然后跟组长反映了这个问题,组长说生产库确实也应该改为读已提交,然后生产库改为了读已提交
再次在生产环境运行测试了一下
调息成功!!