第13章 事务

news2024/11/18 17:34:48

第13章 事务

考试范围: 13.1-13.10

考试题型: 事务操作

考试内容:

1、事务的概念与特性(ACID)

  • 概念

    • A transaction is a unitof program execution that accesses
      and possibly updates various data items
    • 事务是程序执行的单元,它访问并可能更新各种数据项
  • ACID性质

    在这里插入图片描述

2、事务的状态图

在这里插入图片描述

在这里插入图片描述

3、事务调度(schedule)的概念

在这里插入图片描述

  • 假设 I、J 是分别来自两个不同事务的两个操作,它们的关系有以下五种情况:
    • I 和 J 的目标数据项不一样或没有任何共同的数据项。这种情况,无论 I 先执行还是 J 先执行,结果都是一样的,所以 I 和 J 的相对顺序不重要。
    • I=read(Q), J=read(Q),I 和 J 的相对顺序也不重要,因为不管是哪种顺序,它们读到的都是数据项 Q 相同值。
    • I=read(Q), J=write(Q),如果 I 先执行,则 I 读取到的是 Q 被 J 修改之前的值,如果 J 先执行,则 I 读取到的是 J 更新后的 Q 值。所以 I 和 J 的相对顺序很重要。
    • I=write(Q), J=read(Q),上一种情况的对称版。
    • I=write(Q), J=write(Q),两者都是写操作,后写的会覆盖先写的值,导致后续读操作只能读取到后写的值,如果 I 和 J 的相对顺序不一样,则后续读操作读取到的值也不一样。如果后续再没有其他写入 Q 的操作,则它们的相对顺序不一样,导致最后数据库中的 Q 值也不一样。所以 I 和 J 的相对顺序很重要。

4、可恢复调度/级连回滚的概念

  • 可恢复调度 Recoverable Schedules

    • For each pair of transactions X and Y, if Y reads a data item previously written by X, then Y must commit after X has committed(如果 Y读了X修改过的数据,那么在 X提交后,Y 才能提交)
  • 级联回滚 Cascading Rollbacks

    • a single transaction failure leads to a series of transaction rollbacks. 单个事务失败会导致一系列事务回滚。
      Cascading rollback is undesirable, since it leads to the undoing of a significant amount of work 级联回滚是不可取的,因为它会导致大量工作的撤消
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dmbAutGS-1671617523265)(C:\Users\WZT\AppData\Roaming\Typora\typora-user-images\1670547147093.png)]

5、串行调度/并发调度

  • 串行调度(Serial Schedule

    • The transactions execute one by one, without interleaving(事务逐个执行,无需交错)
      在这里插入图片描述
  • 并发调度

    • 使用并发执行的动机
      • 提高吞吐量(throughput)(在给定时间内执行的事务数)和资源利用率
      • 减少平均响应时间(average response time)(提交事务后完成事务的平均时间)
    • Concurrency control schemes 并发控制方案
      • 实现隔离的机制;即控制并发事务之间的交互

6、冲突等价/冲突可串行化/冲突等价可串行化的判断

  • Serializability 可串行化

    • A schedule is serializable if it is equivalent to a serial schedule(如果一个调度能够与某个串行调度等价,它就是“可串行化”的,也叫“可串行化调度”)
  • 冲突等价 conflict equivalent

    • If a schedule S can be transformed into a schedule S’ by a series of swaps of consecutive non-conflicting instructions, we say that S and S’ are conflict equivalent(如果一个调度S可以通过一系列连续的非冲突指令的交换转换为调度S’,我们说S和S’是冲突等价的)
    • img
  • 冲突可串行化

    • We say that a schedule S is conflict serializable (冲突可串行化) if it is conflict equivalent to a serial schedule

    • 即:如果把一个调度S中的不冲突命令调换位置后,可得到一个串行调度,那么这个调度S是“冲突可串行化”

    • 上图中,通过四次调换相邻的不冲突操作的相对顺序,最后得到了一个串行 schedule(先执行事务 1 再执行事务 2),即 S1 和一个串行 schedule 冲突等价。即S1是冲突可串行化的

    • 优先图

      • 每个事务在优先图中都是一个节点

      • 如果事务 1 中的操作 I 和事务2中的操作 J 冲突,且操作 I 在 J 之前,则从事务 1 连一条指向事务 2 的有向边,如果操作 I 在 J 之后,则从事务 2 连一条事务 1 的有向边。

      • 如果事务1 和事务 2 中有多对操作冲突且都是事务 1 中的操作在前,只需要一条从事务 1 指向事务 2 的有向边就行,不需要多条。因为优先图中的有向边只是用来表示是否存在依赖关系的,不用表示数量。

      • 如果 schedule 的优先图中不存在环,则 schedule 是冲突可串行化的,否则 schedule 不是冲突可以串行化的

      • 示例

        • ① 事务 1 中的 read1[A] 和 事务 2 中的 write2[A] 冲突,事务 1 中的write1[A] 和事务 2 中 read2[A]write2[A] 冲突,但冲突的操作对中,都是事务 1 中的操作在前,所优先图中只存在一条从事务 1 到事务 2 的有向边。由于优先图中没有环,所以该 schedule 是冲突可串行化的。

          img

        • ② 事务 1 中的 read1[A] 和事务 2 中的 write2[A] 冲突,且 read1[A] 在前,所以优先图中存在一条从事务 1 指向事务 2 的有向边。事务 1 中的 write1[A] 和事务 2 中的 read2[A] 冲突,且 read2[A] 在前,所以优先图中存在一条从事务 2 指向事务 1 的有向边。事务 1 和事务 2 以及两条有向边形成了一个环,所以该 schedule 不满足冲突可串行化。

          img

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

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

相关文章

云原生|kubernetes|CKA真题解析-------(11-17题)

第十一题: 创建多容器的pod 题目要求:解析: 多容器pod的创建,先创建一个单容器的pod,然后在此基础上修改即可 解答: 先创建单容器的pod kubectl run kucc1 --imagenginx --dry-runclient -oyaml >11…

css实现环形进度条

效果: 纯css实现进度条,这里用到的核心属性为box-show,box-show可以控制元素的阴影,通过控制元素阴影的移动位置来实现进度条效果。 .box{box-show : 0px 0px 0px 0px #ccc; }box-show有5个参数 第一个参数: 控制元…

第4章 中级SQL

第4章 中级SQL 考试范围: 4.1-4.7 考试题型: 计算题 考试内容: 连接类型(与第3章合并考察) 视图的定义与使用 事务(与17-19章合并考察) 完整性的概念 SQL中如何定义、修改各类完整性(Pr…

JVS低代码多账号统一登录介绍

登录操作演示 统一登录能力 JVS整个系统认证采用Oauth2 认证方案,目前支持目前登陆方式如下: 登录方式 说明 账号密码登录 基于JVS的用户名用户密码登录 手机动态验证码登录 基于JVS用户绑定的手机号动态验证码登录 微信扫码关注公众号登录 基于…

web前端-javascript-Math对象(说明和方法,它封装了数学运算相关的属性和方法)

文章目录Math 对象1. 说明2. 方法1) abs()2) Math.ceil()3) Math.floor()4) Math.round()5) Math.random()6) max 和 min7) Math.pow(x,y)8) Math.sqrt()Math 对象 1. 说明 Math 和其他的对象不同,它不是一个构造函数它属于一个工具类不用创建对象,它里…

仿真设计|基于51单片机的简易抢答器

目录 前言 具体实现功能 设计介绍 51单片机简介 设计方案 资料内容 仿真实现(protues8.7) 程序(Keil5) 全部资料(压缩文件) 前言 全部资料包括程序(Keil5)、protues仿真(protues8.7)、仿真视频、…

教育领域知识图谱

教育领域开源的知识图谱实体 在教育领域,有许多开源的知识图谱实体可供使用。下面列出了一些例子: DBpedia:这是一个知识图谱,由 Wikipedia 的内容构建而成。DBpedia 中包含了许多关于人、地方、事物和概念的实体,并且这些实体都具有相关的属性和关系。 Wikidata:这是一个…

LeetCode算法之--二叉树系列

点赞收藏,以防遗忘 本文【程序大视界】已收录,关注免费领取互联网大厂学习资料,添加博主好友进群学习交流,欢迎留言和评论,一起交流共同进步。 【一】前言 二叉树也是面试算法的常见题型,通常程序会自定义…

Go秒杀系统——RabbitMQ核心概念与工作模式

前言💬 Windows 上的 RabbitMQ 被我卸载了,在 macOS 上再安装一下,采用 brew install 还是挺方便的。 很好奇微软的程序员写代码用的是 Windows 操作系统吗?感觉有点不方便,但用 macOS 岂不是太丢撵了。 一、macOS 安装…

APS排程软件提升电子产品生产企业的服务效益

"3C产品",就是计算机、通信和消费类电子产品三者结合,也称"信息家电"。由于3C产品的体积一般都不大,所以往往在中间加一个"小"字,故往往统称为"3C小家电"。 据报道,某一科技公…

使用DoraCloud免费版搭建办公桌面云

DoraCloud是一款多平台的桌面虚拟化管理软件,支持Hyper-V、VMware、Proxmox、XenServer等多种虚拟化平台。DoraCloud在虚拟化平台上具有极大的灵活性,允许您的组织自由选择合适的IT基础设施来构建桌面云;也允许您的组织重用现有的IT设施基础&…

B树和B+树的详解讲解

1.B树 前面我们已经学习了二叉查找树、2-3树以及它的实现红黑树。2-3树中,一个结点做多能有两个key,它的实现红黑树中使用对链接染色的方式去表达这两个key。接下来我们学习另外一种树型结构B树,这种数据结构中,一个结点允许多于…

Java LinkedList

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。 链表可分为单向链表和双向链表。 一个单向链表包含两个值: 当前节点的值和一个…

linux软件安装

软件安装1.安装方式2.安装jdk3.安装Tomcat4.安装mysql5.安装lrzsz1.安装方式 2.安装jdk (1)使用 Xftp 将jdk的二进制包上传到 Linux。 关于 Xftp 的下载和安装看这里: https://blog.csdn.net/weixin_56680764/article/details/126335138 本文…

C++:using : using的四大用法总结

1&#xff1a;using声明&#xff08;引入单个名称&#xff09; using声明是将命名空间中某个名字单独引入到当前作用域&#xff0c;这使得我们在当前作用域下可以直接使用该名字而无需使用作用域限定符 :: 。 #include <string> using std::string; int main() {string…

TKDE2022 | 基于关系的协同过滤算法,利用注意力机制来学习物品关系的嵌入特征...

嘿&#xff0c;记得给“机器学习与推荐算法”添加星标鉴于经典的协同过滤算法的有效性和易用性&#xff0c;基于物品的协同过滤方法已被广泛应用于工业领域&#xff0c;并在近年来被广泛研究。基于物品的协同过滤方法的关键在于物品之间的相似度测量&#xff0c;但本文认为这是…

推荐系统学习笔记-推荐系统数据流

一般数据流 数据流的定义 数据流&#xff08;data stream&#xff09;是一组有序&#xff0c;有起点和终点的字节的数据序列。包括输入流和输出流。数据流最初是通信领域使用的概念&#xff0c;代表传输中所使用的信息的数字编码信号序列。这个概念最初在1998年由Henzinger提…

《软件开发本质论》笔记——如何衡量价值

目录 一、使用数值来表示价值的做法 二、大多数与金钱有关的衡量指标的局限性 三、有没有一个简单的衡量方式 四、价值评估更好的做法 个人理解的价值 一、使用数值来表示价值的做法 这种方式可能让我们滑入深渊。 比如 如果公司开发产品的目的是赚钱&#xff0c;那么就可…

记一次:Keepalived安装高可用操作

前言&#xff1a;现在有许多现成的高可用产品&#xff0c;比如阿里的产品等等&#xff0c;直接购买就可以使用。这个只是笔者自己私下练习使用&#xff0c;成功了。所以记一次总结过程 安装方式一 下载安装包&#xff1a;https://keepalived.org/download.html网址下载2.2.7版…

【小程序】第一个小程序——创建小程序项目

目录 小程序简介 第一个小程序 安装开发者工具 创建小程序项目 小程序简介 1. 小程序与普通网页开发的区别 2. 体验小程序 可使用手机微信(6.7.2 及以上版本)扫码下方小程序码&#xff0c;体验小程序&#xff1a; 第一个小程序 1. 点击注册按钮 使用浏览器打开 https…