Mysql事务隔离

特性

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

多事务同时执行问题

  • 脏读
  • 不可重复读
  • 幻读

事务的隔离级别

  • 读未提交
    • 一个事务还没有提交,他的变更可以被别的事务看到
  • 读已提交
    • 一个事务提交以后,他的变更可以被别的事务看到
  • 可重复读
    • 一个事务开启以后,执行过程中看到的数据都是一致的,未提交的更改对别的事务不可见
  • 串行化
    • 对应一个记录会加读写锁,出现冲突时,必须要等到上一个事务提交以后才能继续执行

事务的隔离实现

  • 每个事务在更新的时候都会同时记录一条回滚操作,通过回滚操作可以得到前一个状态的值(可以想象成git的提交记录,会记录每个版本的更新,方便回滚)
  • 回滚日志什么时候删除:系统会判断没有事务用到这些回滚日志时(当系统里面没有比这个回滚日志更早的读视图),会自动删除

为什么长事务尽量不要用

  • 长事务会导致系统里面会存在很早的事务试图,由于事务可能会访问数据库里面的任何事务,所以提交事务之前数据库里面的回滚日志都必须保留,这就会导致占用大量的存储空间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值