数据库并发控制基本概念和基本技术

news2025/1/11 5:51:49

并发控制与基本技术

  • 一、并发控制
    • 1. 概述
    • 2. 并发访问可能出现的问题
  • 二、并发控制的主要技术
    • 1、基本技术
    • 2、封锁及锁的类型
      • 2.1、什么是封锁
      • 2.2、基本封锁类型
        • 2.2.1、排它锁(Exclusive Locks,简记为 `X 锁`)
        • 2.2.2、共享锁(Share Locks,简记为 `S 锁`)
    • 3、活锁和死锁的概念
    • 4、并发调度的可串行性
    • 5、两段锁
      • 5.1、两段锁协议定义
      • 5.2、两段锁的含义
      • 5.3、两段锁协议与防止死锁的一次封锁法的异同
    • 6、封锁的粒度
    • 7、意向锁
    • 8、锁的强度
    • 9、锁的比较

一、并发控制

1. 概述

事务是并发控制的基本单位,并发控制机制的任务是:
对并发操作进行正确调度
保证事务的隔离性
保证数据库的一致性

2. 并发访问可能出现的问题

丢失修改:指两个事务同时读取同一个数据,然后一个事务修改了这个数据并提交,另一个事务也修改了这个数据并提交,导致第一个事务的修改被覆盖,即数据被丢失。
不可重复读:指一个事务在读取同一个数据两次时,第二次读取的数据与第一次不同,因为在两次读取之间,另一个事务修改了这个数据。
读“脏”数据:指一个事务读取了另一个事务未提交的数据,如果这个事务回滚或者修改了这个数据,则原来读取的数据就是“脏”的。

二、并发控制的主要技术

1、基本技术

封锁(Locking)
时间戳(Timestamp)
乐观锁(Optimistic Scheduler)
多版本并发控制(MVCC)

2、封锁及锁的类型

2.1、什么是封锁

封锁就是事务T对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新次数据对象
封锁是实现并发控制的一个非常重要的技术。

2.2、基本封锁类型

2.2.1、排它锁(Exclusive Locks,简记为 X 锁

又称为写锁,若事务T对数据对象A加锁X锁,则只允许T读取和修改A,其他任何事务都不能对A加任何类型的锁,直到T释放A上的锁,保证其他事务在T释放A上的锁之前不能再读取和修改A。

2.2.2、共享锁(Share Locks,简记为 S 锁

又称为读锁,若事务T对数据对象A加锁S锁,则T可以读A但不能修改A,其他任何事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何的修改操作。

3、活锁和死锁的概念

活锁:因为进程不停地改变自己的状态而无法终止。
死锁:因为互相等待对方占用的资源,导致两个或多个进程都无法继续执行。

4、并发调度的可串行性

什么样的调度是正确的调度?
可串行化的调度是正确的调度

可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,称这种调度策略为可串行化的调度。
可串行性:是并发事务正确调度的准则,按照这个准则一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度

冲突可串行化调度
冲突操作:指不同事务对同一数据的读写操作和写写操作。
Ri(X)与 Wj(X) /* 事务Ti 读 X ,Tj 写 X ,其中 i ≠ j /
Wi(X)与 Wj(X) /
事务Ti 写 X ,Tj 写 X ,其中 i ≠ j */
这两种情况是冲突的,不能更换位置。
注:可串行性调度无法推出是冲突可串行化调度。

5、两段锁

数据库管理系统普遍采用两段锁协议的方法实现并发调度的可串行性,从而保证调度的正确性。
注:可串行性调度无法推出是采用两段锁。

5.1、两段锁协议定义

指所有事务必须分两个阶段对数据项加锁和解锁,即在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁;在释放一个封锁之后,事务不再申请和获取任何其他封锁。

5.2、两段锁的含义

事务分为两个阶段

  1. 获得锁,也称为扩展阶段。事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。
  2. 释放封锁,也称为收缩阶段。事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。

5.3、两段锁协议与防止死锁的一次封锁法的异同

① 一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议。
② 两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。

6、封锁的粒度

封锁对象的大小称为封锁粒度。
封锁的对象:

  1. 逻辑单元:属性值、属性值的集合、元组、关系、索引项、整个索引、整个数据库等。
  2. 物理单元:页(数据页或索引页)、物理记录等。
    【说明】
    ① 封锁粒度与系统的并发度和并发控制的开销密切相关。
    ② 封锁的粒度越大,数据库能封锁的数据单元就越少,并发度就越小,系统开销也就越小。
    ③ 封锁的粒度越小,并发越高,但系统开销也就越高。

多粒度封锁

  1. 多粒度封锁是指在一个系统中同时支持多种封锁粒度供不同的事物选择。

  2. 选择封锁粒度的原则----考虑封锁开销和并发度两个因素,具体为:
    a. 处理多个关系的大量元组的用户事务:数据库为封锁单位。
    b. 处理大量元组的用户事务:以关系为封锁单位。
    c. 只处理少量元组的用户事务:以元组为封锁单位。

  3. 多粒度树:以树形结构来表示多级封锁粒度,根节点是整个数据库,表示最大的数据粒度,叶节点表示最小的数据封锁粒度。
    在这里插入图片描述

  4. 多粒度封锁协议:允许每个结点被独立加锁,对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁。分为两种形式封锁:显式封锁和隐式封锁。
    a. 显式封锁:直接加到数据对象上的封锁。
    b. 隐式封锁:是该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象加上了锁。

7、意向锁

引进目的:提高对某个数据对象加锁时系统的检查效率。

意向锁的含义:如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁。对任一结点加基本锁,必须先对它的上层结点加意向锁。

常用意向锁:

  1. 意向共享锁(简称IS锁):如果一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。
    【例】事务 T1 要对 R1 中某个元组加锁 S 锁,则首先对关系 R1 和数据库加 IS 锁。
  2. 意向排它锁(简称IX锁
    【例】事务 T1 要对 R1 中某个元组加锁 X 锁,则首先对关系 R1 和数据库加 IX 锁。
  3. 共享意向排他锁(简称SIX锁
    【例】对某个表加 SIX 锁,则表示该事务要读整个表(所以要对该表加 S 锁),同时会更新个别元组(所以要对该表加 IX 锁)

8、锁的强度

指它对其他锁的排斥程度,一个事务在申请封锁时以强锁代替弱锁是安全的,反之则不然。
在这里插入图片描述

9、锁的比较

在这里插入图片描述

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

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

相关文章

基于ArkUI框架开发-ImageKnife渲染层重构

ImageKnife是一款图像加载缓存库,主要功能特性如下: ●支持内存缓存,使用LRUCache算法,对图片数据进行内存缓存。 ●支持磁盘缓存,对于下载图片会保存一份至磁盘当中。 ●支持进行图片变换:支持图像像素源图…

【SSconv:全色锐化:显式频谱-空间卷积】

SSconv: Explicit Spectral-to-Spatial Convolution for Pansharpening (SSconv:用于全色锐化的显式频谱-空间卷积) 全色锐化的目的是融合高空间分辨率的全色(PAN)图像和低分辨率的多光谱(LR-MS&#xff…

【微服务】6、一篇文章学会使用 SpringCloud 的网关

目录一、网关作用二、网关的技术实现三、简单使用四、predicates(1) 网关路由可配置的内容(2) 路由断言工厂(Route Predicate Factory)五、filters(1) GatewayFilter(2) 给全部进入 userservice 的请求添加请求头(3) 全局过滤器 —— GlobalFilter(4) 过…

PX4从放弃到精通(二十七):固定翼姿态控制

文章目录前言一、roll/pitch姿态/角速率控制二、偏航角速率控制三、主程序前言 固件版本 PX4 1.13.2 欢迎交流学习,可加左侧名片 一、roll/pitch姿态/角速率控制 roll/pitch的姿态控制类似,这里只介绍roll姿态控制, 代码位置: …

如何确定NetApp FAS存储系统是否正常识别到了boot device?

近期处理了几个NetApp FAS存储控制器宕机的案例,其中部分有代表性的就是其实控制器并没有物理故障,问题是控制器里面的boot device的SSD盘出现了问题。这里给大家share一下如何确定系统是否成功识别到了boot device设备。 对于很多非专业人士来说&#…

mongodb使用docker搭建replicaSet集群与变更监听

在mongodb如果需要启用变更监听功能(watch),mongodb需要在replicaSet或者cluster方式下运行。 replicaSet和cluster从部署难度相比,replicaSet要简单许多。如果所存储的数据量规模不算太大的情况下,那么使用replicaSet方式部署mongodb是一个…

凹凸/法线/移位贴图的区别

你是否在掌握 3D 资产纹理的道路上遇到过障碍? 不要难过! 许多刚接触纹理或 3D 的艺术家在第一次遇到凹凸贴图(Bump Map)、法线贴图(Normal Map)和移位贴图(Displacement Map)时通常…

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细一 Redis的主从复制二 主从复制的作用三 主从复制的流程四 主从复制实验4.1 环境部署4.2 安装Redis(主从服务器)4.3 修改Master节点Redis配置文件 (192.168.163.100)4.4 修改Slave节点Redis配置文…

MySQL-用户与权限

目录 🍁DB权限表 🍁新建普通用户 🍂创建新用户(create user) 🍂创建新用户(grant) 🍁删除普通用户 🍁修改用户密码 🍂Root用户修改自己的密码 🍂Root用户修改普通用户密码 &#x1f…

区块链概论

目录 1.概述 2.密码学原理 2.1.hash函数 2.2.签名 3.数据结构 3.1.区块结构 3.2.hash pointer 3.3.merkle tree 3.3.1.概述 3.3.2.证明数据存在 3.3.3.证明数据不存在 4.比特币的共识协议 4.1.概述 4.2.验证有效性 4.2.1.验证交易有效性 4.2.2.验证节点有效性 …

~~~~~不得不会的账号与权限管理小知识

目录一.用户账号和组账号概述二. useradd添加用户账号三. passwd 修改密码四. 修改用户账户的属性五 . userdel 删除用户账号六. 用户账号的初始配置文件七. 组账号文件八 . 文件/目录的权限及归属8.1设置文件和目录的权限chmod8.2 设置文件和目录的归属chown命令8.3 补充扩展:…

JAVA本地监听与远程端口扫描的设计与开发

随着Internet的不断发展,信息技术已成为社会进步的巨大推动力。不管是存储于服务器里还是流通于Internet上的信息都已成为一个关系事业成败的关键,这就使保证信息的安全变得格外重要。本地监听与远程端口扫描程序就是在基于Internet的端口扫描的基础上&a…

Optional类快速上手

目录 一、概述 二、使用 1、创建对象 2、安全消费值 3、安全获取值 4、过滤 5、判断 6、数据转换 一、概述 我们在编码的时出现最多的就是空指针异常,所以在很多情况下我们需要做各种非空的判断。 尤其是对象中的属性还是一个对象的情况下,这种…

Doris(3):创建用户与创建数据库并赋予权限

Doris 采用 MySQL 协议进行通信,用户可通过 MySQL client 或者 MySQL JDBC连接到 Doris 集群。选择 MySQL client 版本时建议采用5.1 之后的版本,因为 5.1 之前不能支持长度超过 16 个字符的用户名。 1 创建用户 Root 用户登录与密码修改 Doris 内置 ro…

从C出发 19 --- 函数定义细节剖析

因为编译器是自上而下执行代码的,当编译到 paw2 的时候不知道是什么东西,看起来像一个函数但是前面的代码没有发现它,这个时候编译器就会报错 为了防止编译器报错 应该在调用前先声明 ,注意声明的三要素 声明的作用: 让编译器先…

# 切削加工形貌的相关论文阅读【1】-球头铣刀铣削球面的表面形貌建模与仿真研究

切削加工形貌论文【1】-球头铣刀铣削球面的表面形貌建模与仿真研究1. 论文【2】-球头铣刀加工表面形貌建模与仿真1.1 切削加工形貌仿真-考虑的切削参数1.2 其他试验条件1.3 主要研究目的1.4 试验与分析结果1.5 面粗糙度的评价指标2. 论文【1】-球头铣刀加工球面(曲面…

Flutter Row 实例 —— 新手礼包

大家好,我是 17。 本文在 3.31 日全站综合热榜第一。 新手礼包一共 3 篇文章,每篇都是描述尽量详细,实例讲解,包会! Flutter Row 实例 —— 新手礼包Flutter TextField UI 实例 —— 新手礼包Flutter TextField 交…

CDN如何成为大站标配?

在当下的互联网应用中充斥了大量的静态内容,这些静态和准动态内容在访问请求中占据了大量的网络资源,如果这些请求全部指向源站服务器,很容易导致网络的拥塞甚至是服务器的宕机,对正常的业务开展造成严重影响。为了解决这种情况&a…

共享电子邮件的运作方式

通过电子邮件共享,您可以使用评论轻松管理围绕电子邮件展开的讨论,而无需多次转发和回复。这提供了一种轻松的方式,让您可以通过电子邮件与同事分享信息,并获得他们对此的意见/反馈/建议。 电子邮件共享的运作方式 您收到或发送的…

开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放

场景 目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca等。 1、SRS GitHub - ossrs/srs: SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and …