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

全能网站建设完全自学长沙建站工作室

全能网站建设完全自学,长沙建站工作室,广东省自然资源厅厅长陈光荣简历,wordpress foreach文章目录 MVCCMVCC 实现原理隐藏字段undo logundo log的用途undo log类型 版本链ReadView MVCC InnoDB是一个多版本的存储引擎。它保留有关已更改行的旧版本的信息#xff0c;以支持并发和回滚等事务性特性。这些信息存储在undo表空间中的数据结构称为回滚段。InnoDB使用回滚… 文章目录 MVCCMVCC 实现原理隐藏字段undo logundo log的用途undo log类型 版本链ReadView MVCC InnoDB是一个多版本的存储引擎。它保留有关已更改行的旧版本的信息以支持并发和回滚等事务性特性。这些信息存储在undo表空间中的数据结构称为回滚段。InnoDB使用回滚段中的信息来执行事务回滚所需的undo操作。它还使用这些信息来构建数据行的早期版本以实现一致的读取。 MVCC 只在 read-committed 和 repeatable-read两个隔离级别下工作。 MVCC 实现原理 隐藏字段 在mysql中在实现MVCC时会为每一个表添加如下几个隐藏的字段 6字节的DATA_TRX_ID标记了最新更新这条行记录的transaction id每处理一个事务其值自动设置为当前事务IDDATA_TRX_ID只有在事务提交之后才会更新7字节的DATA_ROLL_PTR一个rollback指针指向当前这一行数据的上一个版本找之前版本的数据就是通过这个指针通过这个指针将数据的多个版本连接在一起构成一个undo log版本链6字节的DB_ROW_ID隐含的自增ID如果数据表没有主键InnoDB会自动以DB_ROW_ID产生一个聚簇索引。这是一个用来唯一标识每一行的字段 undo log undo log 主要用于记录数据被修改之前的日志在表信息修改之前先会把数据拷贝到undo log里。 当事务进行回滚时可以通过undo log 里的日志进行数据还原。 undo log的用途 保证事务进行rollback时的原子性和一致性当事务进行回滚的时候可以用undo log的数据进行恢复。 用于MVCC快照读的数据在MVCC多版本控制中通过读取undo log的历史版本数据可以实现不同事务版本号都拥有自己独立的快照数据版本。 undo log类型 insert undo log代表事务在insert新记录时产生的undo log , 只在事务回滚时需要并且在事务提交后可以被立即丢弃 update undo log事务在进行update或delete时产生的undo log ; 不仅在事务回滚时需要在快照读时也需要 所以不能随便删除只有在快速读或事务回滚不涉及该日志时对应的日志才会被purge线程统一清除 版本链 MySQL的每行记录逻辑上其实是一个链表。 MySQL行记录中除了记录业务数据外还有隐藏的 DATA_TRX_ID 和 DATA_ROLL_PTR 当然这个链表存在于 undo log 中和最新版本的数据不在一起。 每次更新后都会将旧值放到一条 undo log 中就算是该记录的一个旧版本随着更新次数的增多所有的版本都会被roll_ptr 属性连接成一个链表我们把这个链表称之为版本链版本链的头节点就是当前记录最新的值。 另外每个版本中还包含生成该版本时对应的 事务id。 ReadView 当我们的隔离级别为 RR 或 RC 时每开启一个事务系统会给该事务会分配一个事务 Id在该事务执行第一个 select 语句的时候会生成一个当前时间点的事务快照 ReadView。 而 RC 和 RR 生成 ReadView 的策略是有差别的 RC隔离级别的事务在每次查询开始时都会生成一个独立的 ReadView。RR隔离级别的事务在第一次读取数据时生成ReadView之后的查询都不会再生成所以一个事务的查询结果每次都是一样的。 RC和RR隔离级别的实现其核心处理逻辑就是判断记录的所有版本中哪个版本是当前事务可见的处理 因此ReadView有以下四个重要变量来判断记录是否对当前事务可见 m_ids创建 ReadView 时当前系统中活跃的事务 Id 列表可以理解为生成 ReadView 那一刻还未执行提交的事务并且该列表是个升序列表。 m_up_limit_id低水位取 m_ids 列表的第一个节点因为 m_ids 是升序列表因此也就是 m_ids 中事务 Id 最小的那个。 m_low_limit_id高水位生成 ReadView 时系统将要分配给下一个事务的 Id 值。 m_creator_trx_id创建该 ReadView 的事务的事务 Id。 这样在访问某条记录时只需要按照下边的步骤进行判断 如果被访问版本的 trx_id 与 ReadView 中的 m_creator_trx_id 值相同意味着当前事务在访问它自己修改过的记录所以该版本可以被当前事务访问。如果被访问版本的 trx_id 小于 ReadView 中的 m_up_limit_id低水位表明被访问版本的事务在当前事务生成 ReadView 前已经提交所以该版本可以被当前事务访问。如果被访问版本的 trx_id 大于等于 ReadView 中的 m_low_limit_id高水位表明被访问版本的事务在当前事务生成 ReadView 后才开启所以该版本不可以被当前事务访问。如果被访问版本的 trx_id 属性值在 ReadView 的 m_up_limit_id 和 m_low_limit_id 之间那就需要判断 trx_id 属性值是不是在 m_ids 列表中这边会通过二分法查找。如果在说明创建 ReadView 时生成该版本的事务还是活跃的该版本不可以被访问如果不在说明创建 ReadView 时生成该版本的事务已经被提交该版本可以被访问
http://www.w-s-a.com/news/431505/

相关文章:

  • 如何建设一个优秀的电商网站沐风seo
  • 从零开始学网站建设知乎安防网站下载
  • 打开网站弹出qq应用软件有哪些
  • 温州网站建设seo网站 如何做 中英文切换
  • 聊城做网站的公司资讯信阳 网站建设
  • 天津市工程建设交易网站查汗国珠海 网页设计
  • 龙果学院大型网站稳定性建设汾阳做网站
  • 湖北 个人网站备案时间域名查询备案查询
  • 网站推广方式校园网站怎么建
  • 长沙seo网站排名怎么在百度发帖
  • 织梦贷款网站模板做印章网站
  • 彭州做网站上海百度网络推广
  • 广州网站搭建快速提升网站排名荧光字网站
  • 15年做那些网站能致富做seo是什么意思
  • 各电商网站的特点网站制作2007
  • 用html做一号店网站怎么做公众号注册平台官网
  • 做盈利网站怎么备案vs做网站如何调试
  • 嘉兴做营销型网站廊坊做网站外包
  • 双语网站模板常州做网站的公司
  • 广州市车管所网站建设全国做网站公司前十名
  • 太原手手工网站建设公司视频直播服务
  • 雷达图 做图网站wordpress首页怎么美化
  • 四川做网站设计公司价格vip解析网站怎么做的
  • 网站建设流程域名申请做化工的 有那些网站
  • 软件开发设计流程图seo搜索引擎官网
  • 外国小孩和大人做网站东富龙科技股份有限公司
  • 上线倒计时单页网站模板做网站的资金来源
  • 泸州市建设厅网站中小企业网络需求分析
  • asp网站版权做网页价格
  • 长春网站建设路关键词优化公司哪家好