cpa做电影网站侵权吗,鄞州区网站建设报价,货源网站开发,wordpress视频教程 百度网盘数据库元素的层次 专栏内容#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发#xff0c;开发的步骤#xff0c;以及开发过程中的涉及的原理#xff0c;遇到的问题等#xff0c;让大家能跟上并且可以一起开发#xff0c;让每个需要的人成为参与者。 本专栏会定期…数据库元素的层次 专栏内容 手写数据库toadb 本专栏主要介绍如何从零开发开发的步骤以及开发过程中的涉及的原理遇到的问题等让大家能跟上并且可以一起开发让每个需要的人成为参与者。 本专栏会定期更新对应的代码也会定期更新每个阶段的代码会打上tag方便阶段学习。 开源贡献 toadb开源库 个人主页我的主页 管理社区开源数据库 座右铭天行健君子以自强不息地势坤君子以厚德载物. 文章目录 数据库元素的层次前言概述多粒度的锁警示锁警示协议规则警示锁相容性矩阵 幻象与插入的正确处理总结结尾 前言
随着信息技术的飞速发展数据已经渗透到各个领域成为现代社会最重要的资产之一。在这个大数据时代数据库理论在数据管理、存储和处理中发挥着至关重要的作用。然而很多读者可能对数据库理论感到困惑不知道如何选择合适的数据库如何设计有效的数据库结构以及如何处理和管理大量的数据。因此本专栏旨在为读者提供一套全面、深入的数据库理论指南帮助他们更好地理解和应用数据库技术。
数据库理论是研究如何有效地管理、存储和检索数据的学科。在现代信息化社会中数据量呈指数级增长如何高效地处理和管理这些数据成为一个重要的问题。同时随着云计算、物联网、大数据等新兴技术的不断发展数据库理论的重要性日益凸显。
因此本专栏的分享希望可以提高大家对数据库理论的认识和理解对于感兴趣的朋友带来帮助。
概述
前面我们分享了不同的封锁模式本文主要介绍数据库元素也就是加锁的对象它可能是以树结构出现的此时就会出现两个问题 遇到第一类树结构是可封锁的层次结构。本文将介绍如何才能既允许大的元素如表上的锁又允许包含其中的较小元素上的锁如块或元组。 并发控制系统中另一类重要的层次是本身的结组形式就是一棵树如B-树索引。如果将它看成一个数据库元素进行加锁那么封锁模式下的性能就会非常低我们需要一种新的方法
如何解决和优化这两类问题将在下文中详细介绍。
多粒度的锁
数据库元素在前面介绍时并没有特别的说明因为在不同数据库的实现中各不相同有整个表也有数据块还有表元组。有些应用受益于小的数据库元素而有的在大的数据库元素下表现更好。
假如给每一个元组提供一个锁那么对于银行帐户业务不管有什么样的帐户集合都可以同时更新但不值得为这样细粒度的锁付出特别大的代价。
作为对照考虑文档的一个数据库这些文档可能不时被编辑但大数据事务将检索整个文档。如果将整个文档作为一个数据库元素对于同时编辑或查看文档的动作将不能进行。
这样看来需要使用大粒度锁又能使用小粒度锁可以使一些应用更新效率。但是为了计算表上的聚集而获得了一个表的共享锁而同时在单个元组上又有排它锁这可能会导致非可串行化的行为。
下面我们来看一些延伸出来的锁模式。
警示锁
解决管理不同粒度的这一问题的方法又延伸出来一种新的锁警示锁也叫意向锁。如同它的名字它只是警示的作用在数据库元素形成嵌套或层次结构时很用作用。 如上图可以看表表块元组三个层级
表是最大的可封锁的元素每张表是一个或多个块组成每个块上存储了表的元组每个块包含了一个或多个元组
在数据库元素层次上管理锁的规则由警示协议构成它既包括普通锁又包括警示锁。 警示锁的表示在普通锁S和X的封锁模式前加前缀I表示如IS表示获取子元素上的一个共享锁意向。
警示协议规则
要在任何元素上加S或X锁时我们必须从层次结构的根开始如果处于将要封锁的元素位置时则不需要进一步查找请求该元素上的S或X锁。如果希望锁的元素位于层次结构的中下时首先在这一结点上加一个警示锁也就是说想要获得其子元素上的共享锁时先请求该结点上的IS锁如果想要获得其子节点的排它锁时先请求该结点上的IX锁接下来重复这一步直到到达所需要的结点。
警示锁相容性矩阵
为了更清晰了解警示锁这里列出了它的相容性矩阵。
ISIXSXIS是是是否IX是是否否S是否是否X否否否否
幻象与插入的正确处理
当事务创建一个可封锁的元素的新的子元素时有时候可能出错。问题在于只能封锁已经存在的对象封锁不存在的但以后可能被插入的数据库元素时没有简单方法下面我们来看一个例子。
事务T1执行select sum(salary) from employ where egroup 2; 事务T2向egroup2的组中插入一条新的元组
T1执行时会在表上加上IS锁并在egroup2的元组上加上S锁 T2执行时看起来不需要锁但它使T1的结果不正确。
因为对于T1来讲有一个幻象元组它没有被加锁因为加锁时它还不存在。有一种办法是当需要插入或删除元组时要在整个表上加X写锁这样T2需要等待T1结束后才能执行这样结果就是一致的。
总结
在不同的数据库元素层次下需要增加锁的类型来防止树形结构整体加锁的问题当然还需要解决对于幻象的加锁处理。
结尾 非常感谢大家的支持在浏览的同时别忘了留下您宝贵的评论如果觉得值得鼓励请点赞收藏我会更加努力 作者邮箱studysenllang.onaliyun.com 如有错误或者疏漏欢迎指出互相学习。