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

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

专栏内容

  • 手写数据库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.mzph.cn/news/217781.shtml

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

相关文章

物流供应链数字化转型:国内领先服务商技术综合解析

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

TCP/IP详解——IP协议,IP选路

文章目录 1. IP 编址1.1 IP 报文头部1.2 进制之间的转换1.3 网络通信1.4 有类 IP 编制的缺陷1.5 变长子网掩码1.6 网关1.7 IP 包分片1.7.1 IP 包分片实例1.7.2 IP 分片注意事项1.7.3 Wireshark 抓取 IP 包分片1.7.4 OmniPeek 抓取 IP 包分片1.7.5 ICMP 不可达差错(需…

【词云图】从excel和从txt文件,绘制以句子、词为单位的词云图

从excel和从txt文件,绘制以句子、词为单位的词云图 写在最前面数据说明&结论 从txt文件,绘制以句子、词为单位的词云图自我介绍 从excel,绘制以句子、词为单位的词云图读取excel绘制以句子、词为单位的词云图文章标题 写在最前面 经常绘…

小程序时代的机遇:开发成功的知识付费平台

知识付费平台不仅为知识创作者提供了广阔的变现渠道,同时也为用户提供了更为个性化、精准的学习体验。本篇文章,小编将为大家讲解知识付费小程序开发相关的知识。 一、小程序时代的背景 知识付费作为小程序领域中的“大热门”,有着非常高的…

一个最小的物联网系统设计方案及源码(一)——系统组成

关于物联网 物联网(Internet of Things,缩写IOT)是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。 物联网一般为无线网,由于每个人周围的设备可以达到一千至五千个&…

【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-设置输入设备

【项目源码】 包括本篇需要的脚本都打包在项目源码中,可以通过下面链接下载: 【背景】 目前我们能投射到远端浏览器(或者任何其它Peer)的媒体流只有默认的MainCamera画面,其实我们还可以通过配置输入来传输操作输入信息,比如键鼠等。 【追加input processing组件】 …

GEE:使用网格搜索法(Grid Search)求机器学习的最优参数或者参数组合

作者:CSDN @ _养乐多_ 本文记录了在 Google Earth Engine(GEE)平台中,计算机器学习分类算法最优参数的代码,其中包括单一参数的最优和不同参数组合的最优。使用的最优参数计算方法是网格搜索法(Grid Search),GEE 平台上并没有现成的网格搜索法 API,因此,本文在 GEE …

FPGA学习笔记-1 FPGA原理与开发流程

1 初识FPGA 文章目录 1 初识FPGA1.1 基本认知1.1.1 什么是FPGA?1.1.2 什么是HDL?什么是Verilog?1.1.3 硬件开发与软件开发1.1.4 FPGA与其他硬件的对比1.1.5 FPGA优势与局限性1.1.6 FPGA的应用1.1.7 FPGA的学习之路 1.2 FPGA开发流程1.2.1 一般…

安装Anaconda和pytorch

首先看下自己电脑是否有英伟达的显卡,如果有的话可以安装GPU版本,没有的话可以安装CPU版本。 CPU版本 1.安装Anaconda 首先去官网下载Anaconda。 点击download,下载的就是最新版本的。 下载完成后,直接运行下步就行 注意到路径…

python读取csv文件

在Python中,你可以使用pandas库来读取CSV文件。以下是一个基本的例子: import pandas as pd# 读取CSV文件data pd.read_csv(filename.csv)# 显示前几行数据print(data.head()) 这里,filename.csv应该被替换为你的CSV文件的实际路径和名称。…

Web漏洞分析-文件解析及上传(上)

随着互联网的迅速发展,网络安全问题变得日益复杂,而文件解析及上传漏洞成为攻击者们频繁攻击的热点之一。本文将深入研究文件解析及上传漏洞,通过对文件上传、Web容器IIS、命令执行、Nginx文件解析漏洞以及公猫任意文件上传等方面的细致分析&…

「Verilog学习笔记」简易秒表

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule count_module(input clk,input rst_n,output reg [5:0]second,output reg [5:0]minute);always (posedge clk or negedge rst_n) begin if (~rst…

控制笔记本电脑性能,增强性能/控制发热---Thinkpad x280

1、引言 手上有一台收来办公的Thinkpad x280,但安装的联想管家却没有性能调节选项,导致电脑性能释放很不顺手。由于有室外办公需求,也就有续航需求,也是让它减少发热;同时我想在室内的时候,完整发挥它的性能&#xff…

<Halcon> 局部放大显示

局部放大显示 当读取的图片为超大分辨率时,我们需要对局部位置或定位到的位置在显示窗口放大显示,主要算子为dev_set_part。 read_image (Image, printer_chip/printer_chip_01) gen_rectangle1 (ROI_0, 617.275, 1347.28, 828.349, 1449.5) dev_set_p…

springcloud微服务篇--2.微服务之间的调用

一、微服务案例需求1: 根据订单id查询订单的同时,把订单所属的用户信息一起返回 1、新建订单项目,用户服务。 2.RestTemplate实现微服务之间的访问。 在order-service的OrderApplication中注册RestTemplate 注入调用: Autowire…

Pyhon基于YOLOV实现的车辆品牌及型号检测项目源码+模型+项目文档

项目运行运行录屏: Pyhon基于YOLOV实现的车辆品牌及型号检测项目运行录屏 完整代码下载地址:Pyhon基于YOLOV实现的车辆品牌及型号检测项目 项目背景: 车辆检测及型号识别广泛应用于物业,交通等的管理场景中。通过在停车场出入口…

【PTA刷题+代码+详解】求二叉树度为1的结点个数(递归法)

文章目录 题目C代码详解 题目 在二叉树T中,其度为1的结点是指某结点只有左孩子或只有右孩子。利用递归方法求二叉树T的度为1的结点个数。 1)如果TNULL,则是空树,度为1的结点个数为0,返回值为0; 2&#xff0…

上海亚商投顾:沪指收复3000点,房地产板块集体走强

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日窄幅震荡,创业板指走势较弱,科创50指数跌近1%。房地产板块集体走强&#xff0…

深度学习中的各类评价指标

深度学习中的各类评价指标 1 Dice Loss2 Precision(精度)3 Recall(召回率)4 F-Score5 mAP 1 Dice Loss Dice Loss,也叫Soft Dice Coefficient,是一种用于图像分割任务的损失函数。它基于目标分割图像与模型…

Apache Flink(十一):Flink集群部署-Standalone集群部署

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