【数据库】 第11章 并发控制

news/2024/11/29 20:31:06/

第11章 并发控制

在这里插入图片描述

事务

事务:(从微观角度,或者从DBMS角度)是数据库管理系统提供的控制数 据操作的一种手段,通过这一手段,应用程序员将一系列的数据库操作组合 在一起作为一个整体进行操作和控制,以便数据库管理系统能够提供一致性 状态转换的保证。

事务一般是由应用程序员提出,因此有开始和结束, 结束前需要提交或撤消。

Begin  Transaction
exec sql …
…
exec sqlexec sql commit work |  exec sql rollback work
End Transaction

在嵌入式SQL程序中,任何一条数据库操纵语句(如exec sql select等)都会引发一个新事务的开 始,只要该程序当前没有正在处理的事务。而事务的结束是需要应用程序员通过commit或 rollback确认的。因此Begin Transaction 和End Transaction两行语句是不需要的。

  • 事务的宏观性(应用程序员看到的事务): 一个存取或改变数据库内容的程 序的一次执行,或者说一条或多条SQL语句的一次执行被看作一个事务
  • 事务的微观性(DBMS看到的事务): 对数据库的一系列基本操作(读、写) 的一个整体性执行。

事务的并发执行:多个事务从宏观上看是并行执行的,但其微观上的 基本操作(读、写)则可以是交叉执行的。

事务的特性 ACID

  • 原子性Atomicity : DBMS能够保证事务的一组更新操作是原子不可分的,即 对DB而言,要么全做,要么全不做
  • 一致性Consistency: DBMS保证事务的操作状态是正确的(符合一个串性的调度),符合一致性的操 作规则,它是进一步由隔离性来保证的
  • 隔离性Isolation: DBMS保证并发执行的多个事务之间互相不受影响。例如两 个事务T1和T2, 即使并发执行,也相当于或者先执行了T1,再执行T2;或者先执行 了T2, 再执行T1。
  • 持久性Durability: DBMS保证已提交事务的影响是持久的(影响磁盘),被撤销事务的影 响是可恢复的(不影响磁盘)。

事务的并发可能导致

在这里插入图片描述

  • 丢失修改

    由于并发交替执行的操作,可能导致某一事物的修改被覆盖

  • 不能重复读:

    是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。

    在一个事务过程中,由于另一个事务修改数据,造成该事务前后读取数据不一致

  • 幻读:

    幻读指的是事务不是串行 发生时的一种现象,是事务 A读取了事务B已提交的新 增数据。例如第一个事务对 一个表的所有数据进行修 改,同时第二个事务向表中 插入一条新数据。那么操作 第一个事务的用户就发现表 中还有没有修改的数据行, 就像发生了幻觉一样。解决 幻读的方法是增加范围锁 (range lock)或者表锁。

    在一个事务过程中,由于另一个事务插入或删除记录,造成该事务前后读取总的记录数不一致

  • 脏读:

    脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。

    一个事务读取了另一个事务尚未提交的数据

数据库事务隔离级别(脏读、幻读、不可重复读)_qq_41776884的博客-CSDN博客_幻读脏读不可重复读

DBMS对事物的控制

在这里插入图片描述

事务的调度

事务调度(schedule):一组事务的基本步(读、写、其他控 制操作如加锁、解锁等)的一种执行顺序称为对这组事务的一个调度。

并发(或并行)调度:多个事务从宏观上看是并行执行的,但其微观上的基本 操作(读、写)则是交叉执行的。

面试必考的:并发和并行有什么区别? - 云+社区 - 腾讯云 (tencent.com)

并发相互抢占资源,并行不相互抢占资源

在这里插入图片描述

并发调度的正确性

当且仅当在这个并发调度下所得到的新数据库结果与 分别串行地运行这些事务所得的新数据库完全一致,则说调度是正确的。

可串行性

如果不管数据库初始状态如何,一个调度对数据 库状态的影响都和某个串行调度相同,则我们说这个调度是可串行化的 (Serializable)或具有可串行性(Serializability)

并行调度的正确性是指内容上结果正确性,而可串行性是指形式上结果正 确性;

可串行性更严格
不可串性化的调度可能产生正确的结果

表达事务的一种模型
在这里插入图片描述

冲突可串行性

在这里插入图片描述

冲突可串行性: 一个调度,如果通过交换相邻两个无冲突的操作能够 转换到某一个串行的调度,则称此调度为冲突可串行化的调度。

在这里插入图片描述

冲突可串行性 是比 可串行性 要严格的概念

满足冲突可串行性,一定满足可串行性;反之不然。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

封锁协议之锁的类型

  • 排他锁X (exclusivelocks)

    只有一个事务能读、写,其他任何事务都不能读、写

  • 共享锁S (sharedlocks)

    所有事务都可以读,但任何事务都不能写

  • 更新锁U (Updatelocks)

    初始读,以后可升级为写

  • 增量锁I (Incrementallock)

    增量更新(例如A=A+x) 区分增量更新和其他类型的更新

在这里插入图片描述
在这里插入图片描述

隔离

在这里插入图片描述
在这里插入图片描述

MySQL默认的隔离级别是可重复读
在这里插入图片描述

封锁粒度

在这里插入图片描述

两段锁协议

在这里插入图片描述
在这里插入图片描述

两段封锁协议是可以保证冲突可串行性的!

死锁

在这里插入图片描述

基于时间戳的并发控制方法


http://www.ppmy.cn/news/28338.html

相关文章

urho3d数据库

只有在启用以下两个构建选项之一时,数据库子系统才会构建到Urho3D库中:Urho3D_Database_ODBC和Urho3D-Database_SQLITE。当两个选项都启用时,URHO3D_DATABASE_ODBC优先。这些构建选项决定子系统将使用哪个数据库API。ODBC DB API更适用于本地…

(九)python网络爬虫(理论+实战)——爬虫实战:指定关键词的百度新闻爬取

系列文章目录 (1)python网络爬虫—快速入门(理论+实战)(一) (2)python网络爬虫—快速入门(理论+实战)(二) (3) python网络爬虫—快速入门(理论+实战)(三) (4)python网络爬虫—快速入门(理论+实战)(四) (5)

用 Python 画如此漂亮的插图 ,So easy

人生苦短,快学Python! 今天我们进行一次实战案例分享,以全球预期寿命与人均 GPD数据为例,写一篇 Python 中漂亮散点图的快速指南。除了正常的数据清洗/处理、还会进行简单的统计分析,实现数据处理-统计分析-可视化一条…

【Opencv-python】之入门安装

目录 一、安装Python 1. 登录官网https://www.python.org/downloads/ 2. 任选一个版本,下载Python 3. 安装Python 记得勾选下图的Add Python 3.6 PATH, 添加python到环境变量的路径,然后选择Install now​编辑 4. 验证是否安装成功 5.退出 二、安装…

FPGA纯verilog解码SDI视频 纯逻辑资源实现 提供2套工程源码和技术支持

目录1、前言2、硬件电路解析SDI摄像头Gv8601a单端转差GTX解串SDI解码VGA时序恢复YUV转RGB图像输出FDMA图像缓存HDMI输出3、工程1详解:无缓存输出4、工程2详解:缓存3帧输出5、上板调试验证并演示6、福利:工程代码的获取1、前言 FPGA实现SDI视…

ptp4l

转自: linuxptp/ptp4l PTP时钟同步配置选项_就是个linux工程师的博客-CSDN博客_ptp4l 匆忙翻译了一下linuxptp ptp4l的帮助手册,不尽准确,不尽详细,仅供参考。欢迎留言讨论相关问题。 1 名称 ptp4l - PTP普通时钟/边界时钟/透明…

【MySQL】基本SELECT语句与运算符

一、最基本的SELECT语句 1、基本结构 SELECT 字段1,字段2 FROM 表名; select * from table_name; *表示表中的所有字段(或者列) 2、列的别名、去重 列的别名: 假设我们要从t_employee表中查询employee_id并给他一个别名 使用as关键字:SELECT employee…

前端基础之HTML扫盲

文章目录一. 第一个HTML程序1. 创建一个HTML文件并运行2. HTML的基本结构二. HTML常见标签1. 注释标签2. 标题标签3. 段落标签4. 换行标签5. 格式化标签6. 图片标签7. 超链接标签8. 表格标签9. 列表标签10. 表单标签10.1 input标签10.2 select标签10.3 textarea标签11. 无语义标…