【数据库】树形数据组织架构下的封锁并发控制,B树索引并发访问控制,树协议原理及案例分析

数据库并发访问树协议

专栏内容

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

开源贡献

  • toadb开源库

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

文章目录

  • 数据库并发访问树协议
  • 前言
  • 概述
  • 树结构的封锁不同点
  • 树协议的规则
    • 举例
  • 树协议原理分析
  • 总结
  • 结尾

前言

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

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

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

概述

有一类数据库元素,它的组织结构是树的形式,树中的各元素之间没有包含关系,如B-树索引数据的组织形式,对于此类数据的访问必须从树进行查找访问,这与之前介绍的数据库元素的层次结构,在加锁方式上不一样。

本文将重点介绍树形结构组织的数据的访问规则,封锁原理,以及一些优化的谈讨。

树结构的封锁不同点

  • 访问需要加锁; 在访问树形数据时,假如是B-树索引,为了保持读写操作的可串行化,需要进行封锁访问,锁模式如之前提到的读锁,写锁,更新锁;

  • 加锁粒度为节点;树的每个节点也是一个数据块,加锁粒度也是节点,更小到元组会带来更多不利,更大的粒度到整棵树,那几乎没有并发性了;

  • 加锁方式与2PL有区别;树的访问都是从根开始,然后一层层遍历,找到对应节点位置;那么加锁也从根开始,按之前介绍的两阶段锁规则,在使用前不能释放锁,那就意味着根节点没有并发性,这不利用索引的使用效率。如果确定不修改树节点,那么就可以提前释放根节点的锁,这就有悖2PL;

基于以上不同,对于树形组织的数据,专门使用树协议加锁方式,而不是2PL方式加锁,在确定当前节点还有空间时,就不会修改根节点,此时就可以提前释放根节点的锁,同样适用于中间节点,当然串行化的保证依赖于都从根往下顺次查找这一顺序。

树协议的规则

树协议由以下规则构成,假定访问树结构使用一种锁,用L(X)来表示加锁X节点;

  • 访问树结构时,第一个锁可以加在树中的任意节点;

  • 只有持有父节点的锁时,才能对其后续节点加锁;

  • 事务可以在任何时候解锁;

  • 不能对已解锁的节点重新加锁,即使此时持有父节点的锁也不行;

举例

在这里插入图片描述

并发三个事务,T1 从节点A开始移动,经过B,C,D;事务T2从B开始,目标是E节点;事务T3从E开始,移动到F和G;其中加锁是L(X),解锁是U(X)表示。

T1T2T3
L1(A);R1(A);
L1(B);R1(B);
L1©;R1©;
W1(A);U1(A);
L1(D);R1(D);
W1(B);U1(B);
L2(B);R2(B);
L3(E);R3(E);
W1(D);U1(D);
W1©;U1©;
L2(E) 被拒绝
L3(F);R3(F);
W3(F);U3(F);
L3(G);R3(G);
W3(E);U3(E);
L2(E);R2(E);
W3(G);U3(G);
W2(B);U2(B);
W2(E);U2(E);

这个例子中,事务T1,T2,T3是按照树协议进行并发调度,其中T2在加锁E节点时,与T3节点发生冲突,导致它被延迟,在T3释放E节点锁之后又得以继续执行。

树协议原理分析

树协议在调度中,锁涉及的事务中的必然包含一个串行动作序列,因为它们都是从上到下的访问顺序,这个可以用优先图来证明,如果优先图中没有环的存在,说明它等价一个可串行化的调度。

通过上面协议规则和树的访问顺序,在一棵树中,两个事务并发时,可以得出以下判断;

  • 假如有几个节点,两个事务都需要加锁,那么这几个节点上的加锁顺序是一样的;

因为两个事务访问的公共元素有两个或两个以上时,每个事务加锁的节点可以组成一个子树,两个子树的交也是一棵子树,访问时也是从最高节点开始,依次向下加锁,所有公共元素的加锁顺序是一致。

总结

对于树形组织的并发访问的控制,不能使用两阶段锁的模式,为了提升并发访问效率,通过树协议,可以提前释放当前节点路径上的锁。

结尾

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker基本管理和概念

1、定义:一个开源的应用容器引擎,基于go语言开发,运行在liunx系统中的开源的、轻量级的“虚拟机” docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器 docker的宿主机是liunx系统,集…

深度学习与逻辑回归模型的融合--TensorFlow多元分类的高级应用

手写数字识别 文章目录 手写数字识别1、线性回归VS逻辑回归Sigmoid函数 2、逻辑回归的基本模型-神经网络模型3、多元分类基本模型4、TensorFlow实战解决手写数字识别问题准备数据集数据集划分 特征数据归一化归一化方法归一化场景 标签数据独热编码One-Hot编码构建模型损失函数…

NLP自然语言处理学习笔记

参考:NLP(自然语言处理)介绍 - 知乎 (zhihu.com) 一、NLP是什么 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自…

uni-app 微信小程序之好看的ui登录页面(一)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…

原生微信小程序将字符串生成二维码图片

weapp-qrcode.js再最后 inde.ts中的内容 // pages/qrCode/index.ts // 引入weapp-qrcode.js文件 var QRCode require(../../utils/weapp-qrcode) Page({/*** 页面的初始数据*/data: {orderNo:"",imagePath:},/*** 生命周期函数--监听页面加载*/onLoad(options:any)…

渗透测试(Lab1.0)

1、用搜索引擎Google或百度搜索麻省理工学院网站中文件名包含“network security”的pdf文档,截图搜索得到的页面。 2、照片中的女生在哪里旅行? 截图搜索到的地址信息。 搜索餐厅的名字,找一下关键词 3、手机位置定位 通过LAC&#xff0…

【AIGC】prompt工程从入门到精通--图片生成专题

本文为系列教程【AIGC】prompt工程从入门到精通的子教程。 一、介绍 与文本提示相比,找到最佳的提示词来生成完美的图片并没有那么成熟。这可能是因为创建对象自身的挑战,这些对象基本上是主观的并且往往缺乏良好的准确性度量方法。 本指南涵盖了基本…

前端典例算法集合

前言 刷算法顺序:1、熟悉本文章第1点的内容;2、刷力扣算法,可以参考这本书的顺序与思想:代码随想录完整版PDF下载 | 合集下载 | 百度云 | | 代码随想录 (programmercarl.com) 3、刷牛客的高频考题 1、熟悉数组Array&#xff0c…

uni-app 微信小程序之好看的ui登录页面(四)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…

uni-app 微信小程序之好看的ui登录页面(二)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…

2023五岳杯量子计算挑战赛数学建模思路+代码+模型+论文

目录 计算力网络(CPN)是一种新型的信息基础设施,完整论文代码见文末 问题描述 2.1 问题1 2.2 问题2 2.3 问题3 问题1的解答过程: 问题3的解答过程: 决策优化应用场景:人工智能模型超参数调优 背景信…

【开源】基于Vue和SpringBoot的车险自助理赔系统

项目编号: S 018 ,文末获取源码。 \color{red}{项目编号:S018,文末获取源码。} 项目编号:S018,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 车…

MQTT源码分析

目录 MQTT源码分析 1. MQTT客户端功能 2. 客户端软件如何实现 3. 程序分层 4. 情景分析 4.1 连接服务器 4.2 创建线程 4.3 发布消息 4.4 最复杂:订阅消息 MQTT源码分析 分析源码:mqttclient\test\emqx\test.c 参考资料: kawaii-mqt…

【开源】基于Vue.js的二手车交易系统

文末获取源码,项目编号: S 084 。 \color{red}{文末获取源码,项目编号:S084。} 文末获取源码,项目编号:S084。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手车档案管理模块…

RabbitMQ 常见面试题

目录 1.前置知识1.1.什么是 MQ?它有什么作用?1.2.什么是消费者生产者模型?1.3.AMQP 是什么? 2.RabbitMQ 入门2.1.什么是 RabbitMQ?有什么特点?2.2.RabbitMQ 的核心概念有哪些?2.2.1.生产者 (Pro…

720度vr虚拟家居展厅提升客户的参观兴致

VR虚拟展厅线上3D交互展示的优势有以下几点: 打破了场馆的展示限制,可展示危险性制品、珍贵稀有物品、超大型设备等,同时提供了更大的展示空间和更丰富的展示内容。 可提供企业真实环境的实时VR全景参观,提升潜在客户信任度。 提供…

go的两大测试方法- 官网推荐

go的两大测试方法- 官网推荐 go的两大测试方法- 官网推荐常见的不正规测试方法main方法个例测试验证 - 不正规1. 提供一个函数:Reverse(input string)进行测试2. 直接在函数下创建main函数下进行个例测试3. 测试发现,Reverse方法不支持某些汉字&#xff…

AZURE==SQL managed instances

创建资源 创建DB 创建完成后,拿着刚才的账号密码依然连接不上 远程连接 需要开启公网访问和开放相关端口 参考Configure public endpoint - Azure SQL Managed Instance | Microsoft Learn 连接成功

微信小程序 跳转界面,选择货物之后,返回上一页带参数并判断参数是否存在

需求 当刚进来时选择货物,跳转到选择货物界面进行货物选择,如果货物重复,不再新增货物,如果不存在,则新增 prevPage.setData()用于在页面之间传递数据。它将数据设置到上一个页面(即prevPage)的…

生成式AI赋能千行百业加速创新,2023亚马逊云科技re:Invent行业盘点

2023亚马逊云科技re:Invent全球大会已于上周圆满闭幕,在本次大会中,亚马逊云科技又为大家带来了很多功能/项目迭代更新,也重磅发布了很多全新的功能。今天从行业视角来盘点回顾哪些重磅发布适用于垂直行业客户,以及面向汽车、制造…