当前位置: 首页 > news >正文

绵阳网站建设策划内容南宁网络推广有限公司

绵阳网站建设策划内容,南宁网络推广有限公司,dw网站制作模板,网站建设做什么会计科目MVCC概念 MVCC(Multi-Version Concurrency Control) 多版本并发控制,是一种并发控制机制,用于处理数据库中的并发读写操作,它通过在每个事务中创建数据的快照,实现了读写操作的隔离性,从而避免了读写冲突和数据不一致的问题。 M…

MVCC概念

MVCC(Multi-Version Concurrency Control) 多版本并发控制,是一种并发控制机制,用于处理数据库中的并发读写操作,它通过在每个事务中创建数据的快照,实现了读写操作的隔离性,从而避免了读写冲突和数据不一致的问题。

MySQL基本并发控制机制

锁机制(当前读)

MySQL使用锁机制来控制并发访问数据库的操作,锁可以分为两种类型:共享锁(S锁)和排他锁(X锁);共享锁允许多个事务同时读取同一数据,而排他锁则只允许一个事务进行写操作。

这种方式它读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。

对于我们日常的操作,如:select ... lock in share mode(共享锁),select ...
for update、update、insert、delete(排他锁)都是一种当前读。

MVCC(快照读)

MVCC是一种高级并发控制机制,它通过创建数据的快照和版本控制来实现读写操作的隔离性。MVCC允许事务在读取数据时看到之前的版本,从而避免了读写冲突和数据不一致的问题。

简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。

  • Read Committed(RR):每次select,都生成一个快照读。
  • Repeatable Read(RC):开启事务后第一个select语句才是快照读的地方。
  • Serializable:快照读会退化为当前读(加锁)。

MVCC的重要组件

Read View(读视图)

ReadView是快照读SQL执行时MVCC提取数据的依据,记录并维护系统当前活跃的事务(未提交的)id,也就是开始事务时的数据。

ReadView四个核心字段

快照是在每个事务开始时创建的一个数据库状态的副本,该快照包含了当前数据库中所有数据行的版本信息,每个事务在开始时会记录一个时间戳,用于标识该事务的开始时间。 读操作时,MySQL会根据事务开始的时间戳和快照中的版本信息来判断数据行的可见性。如果某个数据行的版本早于事务开始的时间戳,则该数据行对当前事务可见;反之,如果数据行的版本早于事务开始的时间戳或者被当前事务修改过,则该数据行对当前事务不可见。

不同的隔离级别,生成ReadView的时机不同:
READ COMMITTED :在事务中每一次执行快照读时生成ReadView。
REPEATABLE READ:仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView。

版本链

每个数据行都维护着一个版本链,该链表结构包含了该数据行的不同版本,每次对数据行进行修改时,MySQL会在版本链中创建一个新的版本,并将该版本与之前的版本连接起来。

版本链中的每个版本都包含了该版本的时间戳、事务ID以及数据行的值。通过版本链,MySQL能够追踪和管理数据行的历史变化,从而实现并发读写操作的隔离性。

Undo Log(回滚日志)

回滚日志,在insert、update、delete的时候产生的便于数据回滚的日志,记录了事务对数据行的修改操作。当insert的时候,产生的undo log日志只在回滚时需要,在事务提交后,可被立即删除。而update、delete的时候,产生的undo log日志不仅在回滚时需要,在快照读时也需要,不会立即被删除。如果事务读取到了已被其他事务修改的数据版本,使用undo log中的信息将数据回滚到适当的版本,以确保事务读取的数据是一致的。

当事务需要回滚时,MySQL会根据Undo Log中的信息将数据行恢复到事务开始之前的状态。 Undo Log的实现方式是将事务对数据行的修改操作记录在磁盘上的一个日志文件中,在回滚操作时,MySQL会按照Undo Log中的日志记录,逆向执行相应的操作,将数据行恢复到原始状态。

MVCC原理分析

读已提交(RC)隔离级别

RC隔离级别下,在事务中每一次执行快照读时生成ReadView。

当一个事务开始时,它会获取一个读视图,并在读视图中记录当前活跃的事务和它们的提交状态。当事务执行读操作时,它会检查读视图中的信息来确定哪些版本的数据对该事务可见。 如果一个数据行的最新版本的时间戳早于事务的读视图创建时间戳,那么该数据行对事务是可见的。如果一个数据行的最新版本的时间戳晚于事务的读视图创建时间戳,那么该数据行对事务是不可见的,因为它是其他事务在事务开始之后修改的。

读视图记录了事务开始时的数据库状态,版本链用于跟踪数据行的不同版本。通过比较读视图和版本链中的时间戳,事务可以确定哪些数据对它是可见的。

可重复读(RR)隔离级别

RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView,所以 在一个事务中,执行两次相同的select语句,查询到的结果是一样的。

当一个事务读取数据时,它只能看到在该事务开始时间之前已经提交的版本,这样,事务可以看到一致的快照视图,而不会受到其他并发事务的影响。

当一个事务修改数据时,它会为修改操作创建一个新的版本,并将该版本的时间戳设置为当前事务的时间戳,其他事务仍然可以读取旧版本的数据,直到当前事务提交。

MVCC的优点

- 并发性能优化:MVCC允许多个事务同时读取数据库,提高了并发性能。

- 隔离性:MVCC提供了读写操作的隔离性,避免了读写冲突和数据不一致的问题。

- 降低锁冲突:MVCC使用乐观锁机制,减少了锁冲突的可能性,提高了系统的吞吐量。

http://www.ds6.com.cn/news/95115.html

相关文章:

  • 时时彩网站制作深圳抖音seo
  • 做网站的前端技术长沙百度公司
  • 390元做微信小程序 公众号 网站中国企业网络营销现状
  • 北京网站建设公司案例企业培训网
  • 成都网站建设服务商百度竞价代理公司
  • 网站空间类型网站制作的费用
  • 网站信息向上滚动标签刷链接浏览量网站
  • 浅析个人网站的设计论文网站关键字优化价格
  • 资金盘网站开发多少钱四川seo
  • 做网站排名公司推荐百度的营销推广
  • 百度新网站提交入口seo店铺描述
  • ui设计周末培训学校宁波seo教程
  • 恩施网站开发什么是seo关键词
  • 做有搜索功能的网站做网络推广费用
  • 南阳市城乡和住房建设局网站日本粉色iphone
  • 重庆云阳网站建设公司推荐百色seo快速排名
  • 做网站费用分摊入什么科目磁力
  • 做家具定制的设计网站网址导航哪个好
  • 手机网站开发c 教程网站关键词快速排名技术
  • 羽毛球赛事2023赛程凌哥seo技术博客
  • 网站建设公司 壹宇网络近期新闻事件
  • 公司网站首页布局图电商seo搜索优化
  • 深圳网站建设公司联华企业网站制作教程
  • 关于做公司app的软件或网站沈阳关键词自然排名
  • wp网站如何做多级联动筛选框数据分析
  • 网站建设需要会什么阿里云域名注册万网
  • 做网站运营工资多少沧州网络推广公司
  • 北京网聘信息技术有限公司重庆seo排名优化费用
  • 短视频app开发软件seo营销是什么
  • 制作公司网页流程费用seo 资料包怎么获得