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

嘉兴网站搜索优化wordpress 分库

嘉兴网站搜索优化,wordpress 分库,汕头市企业网站建设教程,建小说网站需要多少钱MVCC是一个多并发版本控制工具,通过这样一个工具类,可以帮我们解决脏读和不可重复读等问题,所以毫无疑问MVCC是一个高频的常考知识点,今天小编就分享一下MVCC的相关知识点,希望大家都能有所收获。1.MVCC的定义MVCC的全…

MVCC是一个多并发版本控制工具,通过这样一个工具类,可以帮我们解决脏读和不可重复读等问题,所以毫无疑问MVCC是一个高频的常考知识点,今天小编就分享一下MVCC的相关知识点,希望大家都能有所收获。

1.MVCC的定义

     MVCC的全称是Multi-Version Concurrency Control,中译是多版本并发控制是一种数据库管理系统中常用的并发控制机制,用于解决多个事务同时读写数据库时的冲突问题,用于提高并发性能。

     MVCC的核心思想是同时保存数据的多个版本,保证了不同的事务能读取到的数据版本是不同的,这样即使其他的事务在修改数据,也不影响事务读取事务,进而来解决脏读,不可重复读的问题。

2.MVCC的底层

     MVCC的底层是通过undolog日志和数据快照readview两项来组成的,通过undolog日志来记录同一数据的多个不同的数据版本,再通过数据快照readview来判断哪些事务提交的数据对当前的事务可见,接下来我们就对MVCC的设计思路和底层进行讲解。

     在了解MVCC的底层之前,我们需要先知道一件事,就是我们该如何判断一个事务的先后顺序,进而执行后续判断其他事务提交的数据是否对当前的事务可见,因此我们需要事务ID(持续递增)来记录事务执行的先后顺序,事务ID越小,说明事务执行的越早。

     MVCC的底层之一就是通过mysql日志undolog来实现同一个数据的不同版本控制,为了能够达成这样的一个效果,我们会对数据添加一个隐藏字段roll_pointer(回滚指针)来指向undolog日志,后通过回滚指针来将所有的历史数据都串联成一个链表,这样就可以通过回滚指针来查询同一个数据的不同版本,这样就实现了一个数据的多版本控制。

     MVCC的底层之一是通过数据快照readview来判断哪些事务的数据是对当前事务可见的,而一个readview当中,主要包含四个重要的信息字段:

  • creator_trx_id:创建当前readview的事务id

  • m_ids:当前在数据库活跃的但没有提交的事务列表

  • max_trx_id:当前系统最大事务 ID

  • min_trx_id:当前系统最小事务 ID

     而MVCC就会通过readview所包含的这四个字段来判断D数据版本对当前事务可见一般分为三种情况:

  • 假设当前的数据版本号小于最小的事务ID,说明该版本的数据在readview前存在,则当前数据对当前事务可见。

  • 假设当前的数据版本号大于最大的事务ID,说明该版本的数据在readview后产生的,则当前数据对当前事务不可见。

  • 假设当前的数据版本号在最小的事务ID与最大的事务ID之间,则通过比对是否在没有提交的事务列表中,如果存在则数据不可见,不存在则数据可见。

3.MVCC的执行流程

     从一个事务开启MVCC之后,针对每一个数据MVCC都会有一个对应的版本处理过程,接下来我们就针对某一个数据,对这样的一个过程进行讲解:

     1.当数据由事务进行提交后,数据更新新的版本,而不被修改,同时增加undolog版本链当中的新的数据版本。

     2.当事务执行SELECT语句以后,就会生成一个对应得数据快照,后通过数据快照,来指定对当前事务可见得数据版本。

插入:

  • 创建一个新版本的数据

  • 设置 trx_id为当前事务 ID

  • 设置 roll_pointer 为 NULL(因为是第一个版本)

删除:

  • 不会真正删除数据,而是将当前版本的trx_id标记为删除该版本的事务 ID

  • 后续事务根据 Read View 判断是否可见

更新:

  • 不会直接修改原数据,而是创建一个新版本

  • 新版本的 trx_id为当前事务 ID

  • 新版本的 roll_pointer指向旧版本

查询:

  • 根据当前事务的 Read View,判断哪些版本是可见的

  • 从最新版本开始,沿着roll_pointer链回溯,找到第一个可见的版本

4.MVCC的优劣势

     MVCC同时也具有其独属的优劣势,接下来我们会对其做逐一的分析:

     MVCC的优势:MVCC是多并发版本控制,通过undoLog日志维护数据的多份版本,并通过readview控制不同事务只能读取指定版本的数据,通过这些工具,我们就能通过MVCC来保证一些并发问题的控制,如脏读,不可重复读,幻读等等。

     MVCC的劣势:MVCC同时也存在许多劣势,如需要保存多个版本的数据,占用更多存储空间,而且其清理机制复杂需要定期清理不再需要的旧版本。

5.总结

    用一句话来说,MVCC就是通过undolog日志来记录同一数据的多个不同的数据版本,再通过数据快照readview来判断哪些事务提交的数据对当前的事务可见,进而避免了脏读,不可重复读,幻读等问题。

今天的分享就到这里了,希望这篇博客能给你一些帮助,让你对关于MVCC的问题得到进一步的提升,在面试的时候能从容面对面试官。

http://www.dtcms.com/a/454336.html

相关文章:

  • 重庆建设银行网站西安网站建设公司排
  • CompletableDeferred 使用和注意事项
  • 安贞网站建设公司烟台网站开发公司
  • 第10讲:操作符详解——掌握C语言的“运算密码”
  • 安平县哪家做网站手机站电影
  • 大淘客网站上的推广怎么做网站建设设计风格描述
  • 简述常用的网站开发软件产品设计和工业设计有什么区别
  • 建设网站制作汉狮团队wordpress mysql 挂了
  • 移动端公众号网站开发软文发稿平台有哪些
  • 计算机操作系统:操作系统的目标与作用
  • paypal客户端网站建设评价网页制作收入
  • 重庆做兼职哪个网站网页升级跳转自动刷新
  • 网站 翻页 实现网站集约化建设方案
  • 公司网站管理图片制作ppt的软件是什么
  • Altium Desinger阵列式粘贴使用
  • 临沂seo网站推广曹鹏wordpress教程 下载
  • PyQt批量年龄计算工具:从身份证到指定日期的周岁处理
  • L2TPv2-原理浅谈+报文示例+简易配置-RFC2661
  • 信息系统项目的风险管理
  • hot100-3
  • 网站推广的措施和手段有哪些网站优化顺义案例
  • CompletableDeferred、defer 和 Job 关系
  • 呼市做引产z首大网站网站设计和建设ppt
  • 做面膜的网站如何才能做好品牌网站建设策划
  • 外贸社交网站排名网站搜不出来怎么办
  • 做影视网站规模不大洛阳网站建设哪个好点
  • 《投资-82》价值投资者的认知升级与交易规则重构 - 第二层:五大财务指标的定义、分析方法、误区
  • 做网站哪家强wordpress 不用插件代码高亮
  • string类的理解和使用
  • 做羞羞网站谷歌广告联盟怎么做