vue 做双语版网站,wordpress自定义上传路径,无限极企业微信app下载安装,个人主页的设计使用有效性确认的并发控制 专栏内容#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发#xff0c;开发的步骤#xff0c;以及开发过程中的涉及的原理#xff0c;遇到的问题等#xff0c;让大家能跟上并且可以一起开发#xff0c;让每个需要的人成为参与者。 本专…使用有效性确认的并发控制 专栏内容 手写数据库toadb 本专栏主要介绍如何从零开发开发的步骤以及开发过程中的涉及的原理遇到的问题等让大家能跟上并且可以一起开发让每个需要的人成为参与者。 本专栏会定期更新对应的代码也会定期更新每个阶段的代码会打上tag方便阶段学习。 开源贡献 toadb开源库 个人主页我的主页 管理社区开源数据库 座右铭天行健君子以自强不息地势坤君子以厚德载物. 文章目录 使用有效性确认的并发控制前言概述有效性确认原理基于有效性确认的调度器结构基于有效性确认事务执行阶段划分调度器维护的数据集合 有效性确认规则过早读的确认过早写的确认 总结结尾 前言
随着信息技术的飞速发展数据已经渗透到各个领域成为现代社会最重要的资产之一。在这个大数据时代数据库理论在数据管理、存储和处理中发挥着至关重要的作用。然而很多读者可能对数据库理论感到困惑不知道如何选择合适的数据库如何设计有效的数据库结构以及如何处理和管理大量的数据。因此本专栏旨在为读者提供一套全面、深入的数据库理论指南帮助他们更好地理解和应用数据库技术。
数据库理论是研究如何有效地管理、存储和检索数据的学科。在现代信息化社会中数据量呈指数级增长如何高效地处理和管理这些数据成为一个重要的问题。同时随着云计算、物联网、大数据等新兴技术的不断发展数据库理论的重要性日益凸显。
因此本专栏的分享希望可以提高大家对数据库理论的认识和理解对于感兴趣的朋友带来帮助。
概述
有效性确认是另一种乐观的并发控制模型它允许事务不经过封锁访问数据同时在适当的时候检查事务是否以一种可串行化的方式执行。
实际数据库中会将几种并发控制混合使用这里将它们独立开来易于我们理解本文将介绍有效性确认模型的运行机制规则。
有效性确认原理
有效性确认与时间戳模型的区别在于前者需要维护一个关于活跃事务正在做什么的记录列表而不是为所有数据库元素保存访问的时间戳。
事务开始时在数据库元素写入值前的那一刻它经过一个有效性确认阶段。这个阶段中用它已经读的和将要写的元素集合与其它活跃事务的写集合做比较如果存在事实上不可实现行为的风险时该事务就被回滚。
基于有效性确认的调度器结构
有效性确认被用做并发控制时对于事务T调度器必须被告诉事务所读的和写的数据库元素的集合它们分别记作读集合RS(T)写集合WS(T)。
基于有效性确认事务执行阶段划分
那么事务分三个阶段来执行 读阶段在第一阶段事务从数据库中读取读集合中的所有元素同时事务还需要计算它将要写的数据库元素集合。 有效性确认阶段在这一阶段调度器通过比较该事务与其它活跃事务的读写集合来确认该事务的有效性详细步骤在下面进行介绍。如果确认失败则该事务回滚否则它将进入下一阶段。 写阶段在这一阶段中事务往数据库中写入其写集合中的数据库元素值。
调度器假定有效性确认是一瞬间完成的这样基于有效性确认的调度器对事务的进行有一个假定的串行顺序并且它根据这一串行顺序来决定事务是否有效。
调度器维护的数据集合
为了支持做出事务有效性的决定调度器维护数据集合 START集合事务已经开始但还未做有效性确认此类事务的集合。对这个集合中的事务调度器维护事务开始的时间。 VAL已经确认有效性但尚未完成第三阶段的事务集合。也就是事务T的确认时间。 FIN已经完成第三阶段的事务也就是事务的完成时间对于此集合中的事务T调度器记录START(T),VAL(T),FIN(T)三个值。
随着事务数量的增加这个数据集合是不断增长的假如对于任意活跃事务U它的START(U)大于集合中的事务T的FIN(T)时那么事务T就可以从此集合中踢除防止集合的无限增长。
有效性确认规则
如果事务按照有效性确认的阶段顺序执行那么使用上述集合就可以识别出任何违反顺序的事务。有效性确认的规则有如下几条 对于所有经过了有效性确认且在事务T开始前还没有完成的事务U对于它满足条件 FIN(U) START(T)此时检测是否RS(T) 与 WS(U)交集是否为空 对于所有经过了有效性确认且在事务T有效性确认前还没有完成的U对于它满足条件 FIN(U) VAL(T)对于U检测是否有WS(T) 与 WS(U) 的交集为空。
过早读的确认 在事务T有效性确认时因为事务T已经读过X但是事务U写的X值并没有提交所以事务T有效性确认不过。
事务U在VAL集合中即U的有效性确认已经成功事务U与事务T满足条件 FIN(U) START(T)即在事务T进入有效性确认阶段前事务U并没有完成此时事务T有效性确认时检查 它的读集合RS(T) 与事务U的写集合 WS(U)是否有交集至少包含X元素此时就需要回滚T避免串行顺序不一致的风险。
过早写的确认 在事务U写X之前晚开始的事务T先对X进行了写入按照有效性确认规则处理如下
事务U在VAL集合中即U的有效性确认已经成功事务U与事务T满足条件 FIN(U) VAL(T)即对于事务T进入有效性确认后事务U并没有完成此时事务T的有效性确认检查它的写集合 WS(T) 和事务U的写集合 WS(U) 是否有交集此时交集中有X则不能通过有效性确认需要回滚T
总结
有效性确认假定是在瞬时完成实际不会是这样尤其在多处理器的机器上需要通过原子同步的方法来达到有序完成的效果。
结尾 非常感谢大家的支持在浏览的同时别忘了留下您宝贵的评论如果觉得值得鼓励请点赞收藏我会更加努力 作者邮箱studysenllang.onaliyun.com 如有错误或者疏漏欢迎指出互相学习。