mysql中的mvcc

mvcc全称(Multiversion concurrency control),是为了解决数据库的事务操作中的多线程并发安全问题的无锁并发控制技术。

为什么需要mvcc

需要从三个场景出发 读读并发,读写并发,写写并发。

  1. 读读并发,不会产生并发问题,也不需要并发控制
  2. 读写并发,会造成事务隔离性问题,脏读,幻读和不可重复读的问题。
  3. 写写并发,可能出现数更新丢失的问题。

mvcc相当于是为了修改保存一个版本,版本与事务时间戳关联,读操作只读事务开始前的数据库的快照。它是通过数据库记录中的隐式字段Undo日志,ReadView来实现的。

 什么是脏读

脏读指的是读到其他事务未提交的数据。未提交的数据有可能因其他问题回滚,导致数据库不存在这条数据。

 什么是不可重复读

不可重复读是指在一个事务中多次读取到同一数据不一致

什么是幻读

幻读是指验证数据库是否存在数据,不存在时准备插入之时,其他事务已经插入数据了,本次事务插入数据就失败了。
 

 解决的问题

  1. 在并发读写数据库时,提高数据库的并发读写的处理能力
  2. 实现读一致性,解决脏读,幻读,不可重复读等事务隔离问题。
  3. 采用乐观锁或者悲观锁用来解决写和写的冲突 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值