【数据库】基于有效性确认的并发访问控制原理及调度流程,乐观无锁模式,冲突较少下的最优模型

news2024/12/26 12:00:27

使用有效性确认的并发控制

专栏内容

  • 手写数据库toadb
    本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。
    本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学习。

开源贡献

  • toadb开源库

个人主页:我的主页
管理社区:开源数据库
座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.

文章目录

  • 使用有效性确认的并发控制
  • 前言
  • 概述
  • 有效性确认原理
  • 基于有效性确认的调度器结构
    • 基于有效性确认事务执行阶段划分
    • 调度器维护的数据集合
  • 有效性确认规则
    • 过早读的确认
    • 过早写的确认
  • 总结
  • 结尾

前言

随着信息技术的飞速发展,数据已经渗透到各个领域,成为现代社会最重要的资产之一。在这个大数据时代,数据库理论在数据管理、存储和处理中发挥着至关重要的作用。然而,很多读者可能对数据库理论感到困惑,不知道如何选择合适的数据库,如何设计有效的数据库结构,以及如何处理和管理大量的数据。因此,本专栏旨在为读者提供一套全面、深入的数据库理论指南,帮助他们更好地理解和应用数据库技术。

数据库理论是研究如何有效地管理、存储和检索数据的学科。在现代信息化社会中,数据量呈指数级增长,如何高效地处理和管理这些数据成为一个重要的问题。同时,随着云计算、物联网、大数据等新兴技术的不断发展,数据库理论的重要性日益凸显。

因此,本专栏的分享希望可以提高大家对数据库理论的认识和理解,对于感兴趣的朋友带来帮助。

概述

有效性确认是另一种乐观的并发控制模型,它允许事务不经过封锁访问数据,同时在适当的时候检查事务是否以一种可串行化的方式执行。

实际数据库中会将几种并发控制混合使用,这里将它们独立开来,易于我们理解,本文将介绍有效性确认模型的运行机制,规则。

有效性确认原理

有效性确认与时间戳模型的区别在于,前者需要维护一个关于活跃事务正在做什么的记录列表,而不是为所有数据库元素保存访问的时间戳。

事务开始时,在数据库元素写入值前的那一刻,它经过一个有效性确认阶段。这个阶段中,用它已经读的和将要写的元素集合,与其它活跃事务的写集合做比较,如果存在事实上不可实现行为的风险时,该事务就被回滚。

基于有效性确认的调度器结构

有效性确认被用做并发控制时,对于事务T,调度器必须被告诉事务所读的和写的数据库元素的集合,它们分别记作读集合RS(T),写集合WS(T)。

基于有效性确认事务执行阶段划分

那么事务分三个阶段来执行:

  1. 读阶段;在第一阶段,事务从数据库中读取读集合中的所有元素,同时事务还需要计算它将要写的数据库元素集合。

  2. 有效性确认阶段;在这一阶段,调度器通过比较该事务与其它活跃事务的读写集合来确认该事务的有效性,详细步骤在下面进行介绍。如果确认失败,则该事务回滚,否则它将进入下一阶段。

  3. 写阶段;在这一阶段中,事务往数据库中写入其写集合中的数据库元素值。

调度器假定有效性确认是一瞬间完成的,这样基于有效性确认的调度器对事务的进行有一个假定的串行顺序,并且它根据这一串行顺序来决定事务是否有效。

调度器维护的数据集合

为了支持做出事务有效性的决定,调度器维护数据集合:

  1. START集合;事务已经开始,但还未做有效性确认,此类事务的集合。对这个集合中的事务,调度器维护事务开始的时间。

  2. VAL;已经确认有效性,但尚未完成第三阶段的事务集合。也就是事务T的确认时间。

  3. 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;

总结

有效性确认假定是在瞬时完成,实际不会是这样,尤其在多处理器的机器上,需要通过原子同步的方法来达到有序完成的效果。

结尾

非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!

作者邮箱:study@senllang.onaliyun.com
如有错误或者疏漏欢迎指出,互相学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1306197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

orb-slam2学习总结

目录 视觉SLAM 1、地图初始化 2、ORB_SLAM地图初始化流程 3、ORB特征提取及匹配 1、对极几何 2、对极约束 (epipolar constraint) 3、基础矩阵F、本质矩阵E 5、单目尺度不确定性 6、单应矩阵(Homography Matrix) 6.1 什么是单应矩…

没有明确的报错信息,阿里云国际版Windows服务器无法远程连接

在远程连接失败时,如果您没有收到系统返回的报错信息,并且ECS实例是运行中的状态,然后再根据以下步骤进行排查: 步骤一:使用阿里云Workbench工具测试远程登录 步骤二:检查是否有收到黑洞通知 步骤三&…

Zygote 进程启动过程

首语 在Android系统中,DVM(Dalvik虚拟机)和ART、应用程序进程以及运行系统的关键服务的SystemServer进程都是由Zygote进程创建的,也可以将其称之为孵化器,它通过fork(复制进程)的形式来创建应用程序进程和SystemServer进程。 Zygote进程是在…

AnythingLLM:基于RAG方案构专属私有知识库(开源|高效|可定制)

一、前言 继OpenAI和Google的产品发布会之后,大模型的能力进化速度之快令人惊叹,然而,对于很多个人和企业而言,为了数据安全不得不考虑私有化部署方案,从GPT-4发布以来,国内外的大模型就拉开了很明显的差距…

Oracle(2-17) RMAN Maintenance

文章目录 一、基础知识1、Retention Policy 保留政策2、Recovery Window - Part 1 恢复窗口-第1部分3、Cross Checking 交叉检查4、The CROSSCHECK Command CROSSCHECK命令5、OBSOLETE VS EXPIRED 过时与过期6、Deleting Backups and Copies 删除备份和副本7、The DELETE Comma…

极狐GitLab CI/CD 变量黑魔法之自定义变量

极狐GitLab CI/CD 变量是指一系列的环境变量,用来帮助我们控制 CI/CD Job 或 Pipeline 的行为,存储一些可以复用的信息,避免在 .gitlab-ci.yml 中形成硬编码。 极狐GitLab CI/CD 变量分为预定义变量(predefined CI/CD variables) 和 自定义变…

图论-并查集

并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题.一些常见的用途有求连通子图,求最小生成树Kruskal算法和最近公共祖先(LCA)等. 并查集的基本操作主要有: .1.初始化 2.查询find 3.合并union 一般我们都会采用路径压缩 这样…

flex布局,换行的元素上下设置间距

要生成的效果图如下: display:flexflex-direction: row;flex-wrap: wrap;当我们使用弹性盒子布局后,默认元素是没有外边距的,紧挨着样式就有点丑,如果想使换行后,元素的外边距有个距离,可以用如下方法解决…

Apache Flink(十二):Flink集群部署-Flink On Yarn

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

Python学习笔记(四):函数的定义、函数的返回值、None类型、函数说明文档、函数的嵌套调用、局部变量、全局变量、global关键字

目录 一、函数介绍 1. 函数是: 2. 使用函数的好处是: 二、函数的定义: 三、函数的参数 1.传入参数的功能是: 2.函数的传入参数 - 传参定义 3.注意事项: 4.练习:测量体温 四、函数的返回值 1.函数…

Axure元件基本介绍进阶

Axure元件基本介绍进阶 1.Axure元件基本介绍1.在 Axure 中,元件是构建原型的基本构成单元,能够帮助设计师快速创建、重复使用和管理设计元素。以下是 Axure 中元件的基本介绍:1.基本元件: 2.基本元件的使用一.【举例说明】积木&am…

基于 Game Object Conversion 和 SubScene 的 DOTS 开发工作流(干货满满!)

(译前言: Unity DOTS提出了一套全新的开发技术栈, 但目前少有精讲如何结合现有工作流进行开发的资料, 外网 这篇文章 (Game Object Conversion and SubScene) 详细解构了基于 GameObject 和 Subscene 的工作流程和原理, 要求读者对 DOTS/ECS 有基本的了解, 虽然非常之长, 但值得…

8 Buildroot 根文件系统构建

一、根文件系统简介 根文件系统一般也叫做 rootfs,这个是属于 Linux 内核的一部分。 根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统,它的特殊之处在于,…

flutter的ListView和SingleChildScrollView有什么区别?他们的使用场景有什么不一样?

文章目录 简介ListViewSingleChildScrollView使用场景的不同 简介 ListView和SingleChildScrollView都是在Flutter中用于处理滚动内容的组件,但它们有一些关键的区别。 ListView 多个子元素: ListView是一个滚动的可滚动组件,通常用于包含多…

看图识药,python开发实现基于VisionTransformer的119种中草药图像识别系统

中药药材图像识别相关的实践在前面的系列博文中已经有了相应的实践了,感兴趣的话可以自行移步阅读即可,每篇文章的侧重点不同: 《python基于轻量级GhostNet模型开发构建23种常见中草药图像识别系统》 《基于轻量级MnasNet模型开发构建40种常…

HTML中常用表单元素使用(详解!)

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍HTML中常用表单元素使用以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言 …

云基础软件深化合作,云轴科技ZStack与麒麟软件战略签约

12月8日,云轴科技ZStack与麒麟软件战略合作签约仪式在北京举行,双方对过往紧密合作表达了充分肯定,并就进一步联合技术创新、打造重点行业标杆和持续赋能客户达成高度共识。云轴科技创始人&CEO张鑫和麒麟软件高级副总经理谢文征共同见证双…

112. 路径总和(Java)

目录 解法: 官方解法: 方法一:广度优先搜索 思路及算法 复杂度分析 时间复杂度: 空间复杂度: 方法二:递归 思路及算法 复杂度分析 时间复杂度: 空间复杂度: 给你二叉树的…

【毕业设计】基于STM32的解魔方机器人

1、方案设计 1.采用舵机作为魔方机器人的驱动电机,从舵机的驱动原理可知:舵机运行的速度和控制器的主频没有关系,所以采用单片机和采用更高主频的嵌入式处理器相比在控制效果上没有什么差别。单片机编程过程简单,非常容易上手&am…

c#_sqlserver_三层架构winform学生信息管理及选课系统

基本功能包括管理员登录、注册学生账号、删除学生信息、查找学生信息、发布课程、修改课程、删除课程等。 教师端 登录:管理员登陆,拥有相应账号即可登录(后台注册)。注册学生账号:管理员可给学生分配学号&#xff0…