gorm 修改事务维度的隔离级别

gorm 修改事务维度的隔离级别

大家如果看过MySQL事务隔离级别的相关文档,应该知道InnoDB引擎的默认隔离级别是RR[可重复读],但是一般互联网公司为了确保读到最新的已提交数据,都会将事务的隔离级别设置为RC[读已提交],但是最近有一个应用场景时,需要读到数据库在当前执行select语句时刻的数据,而不是最新的数据,那么这个时候就需要事务的隔离级别是RR才可以做到,至于为什么,建议复习MVCC机制
需要修改事务的隔离级别,但是又不想影响其他业务,于是使用了gorm封装好的方法来修改下一个将要开启的事务的隔离级别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这其中也去看了一下源码,MySQL本身是可以修改三种维度的隔离级别的: MySQL文档
在这里插入图片描述
在这里插入图片描述
gorm的这种方法底层其实是调用的go-sql-driver库然后执行的SET TRANSACTION ISOLATION LEVEL xxx,所以只对下一个即将开启的事务生效
其他三种维度没有封装对应的方法,平时开发一般也用不到…
PS:RR和RC级别下进行写操作时加锁粒度不同,RR加行锁和间隙锁,RC加行锁,需要注意的是锁不是事务维度的,而是数据库维度的,也就是修改事务的隔离级别时需要注意当前事务的锁的粒度,注意提升锁粒度时是否会影响到当前其他业务代码原来的写操作

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值