写点什么

MVCC 的机制初识

作者:卢卡多多
  • 2021 年 11 月 16 日
  • 本文字数:584 字

    阅读完需:约 2 分钟

MVCC的机制初识

死锁通常是对于资源占用之后,没有及时的释放,导致了资源一直被锁定的状态。

1.解除死锁的方法:

本质上是将当前的进程从死锁的状态解脱出来;


在实际工作用,主要是用于 银行家算法资源分配法这两种方式来避免死锁。

2.MySQL 的死锁问题:

在 Mysql,默认的存储引擎是 InnoDB,其中这个引擎是会产生死锁的问题,这个是行锁级别的问题,


其中这个 InnoDB 存储引擎,---->等待图;

如果发生死锁,等待图会如何做呢?

在运行过程中,等待图的方式会检测死锁,如果发生死锁,就会自动的回滚一个事务。


一般是 MySQL 的中,可以这样做避免死锁?


  • 索引避免无效索引,导致行锁升级为表锁

  • 设计索引,尽量缩小锁的范围

  • 控制特定事务的大小,加锁操作在事务的最后执行,尤其是写操作;

  • 使用低级别的事务隔离机制

InnoDB 中 Mvcc 原理

其中这个数据库中的 MVCC 的机制主要用于并发操作下的数据更新以及 CRUD。


本质上是,MVCC 机制是对于数据库中数据某个时间点的数据快照


也就是说,同一个读的操作,按照相同的条件查询数据,在当前情况下,查到的结果都是一样的,


但是从另外一个角度看,不同事务,在同样时间中,看到的数据表中的数据也可能是不同的。

MVCC 的组成机制

Mvcc 的机制是通过每行数据表记录后面两个具体的列(隐藏)来实现的;


其中一列会保存行的创建本号,另一个是保存行的过期版本号;


用于对于每次事务开始之前,和每行之前记录的版本号进行对比。


一般是新的事务,就会递增这个版本号

发布于: 3 小时前阅读数: 6
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习

评论

发布
暂无评论
MVCC的机制初识