当前位置: 首页 > news >正文

2023-08-30 数据库-并发控制-冲突可串行化调度-是否可串行化检测-优先图-分析

摘要:

将冲突进行可串行化调度, 是解决冲突是一个基本功能. 对于冲突是否可被串行化调度, 比较有效的就是优先图的方法.

本文对检测冲突可串行化调度的优先图做一些分析.

上下文参考: 2023-08-30 数据库-并发控制-冲突可串行化的调度-思考_财阀悟世的博客-CSDN博客

事务的基本抽象:

  1. 在考虑事务的调度时, 排除事务之间的偶然性和巧合性的影响
  2. 那么事务的核心就是一些操作序列, 也就是读R和写W的序列
  3. 可以将事务表示为:  T = R(A),W(A),R(A),W(B),W(A)
  4. 上面公式中的A和B代表读/写所处理的数据库的资源
  5. 事务内部的读/写的执行序列不能改变, 执行序列就是事务本身
  6. 被调度是事务, 内部的执行序列存在与其他事务的交叉, 但是事务内部的之心序列的顺序绝不能被改变
  7. 读操作不会修改数据库的资源, 只有写的操作会修改数据库的资源, 所以存在冲突的事务, 至少要存在一个写的操作

调度的基本抽象:

  1. 调度的对象是事务, 且一般包含多个事务, 也就是一个调度同时处理多个事务的执行
  2. 一个调度内的多个事务, 这多个事务之间的顺序的变化将会数据库的一致性产生影响
  3. 考虑两个事务T1和T2, 每个事务内部分别有一个操作A1和A2,A1和A2都对数据库的资源A产生修改
    1. 如果语义上要求A1先执行, A2后执行, 那么就事务T1优先于事务T2执行, 记作 T1 < T2
    2. 由于A1和A2顺序不可改变, 那么T1和T2的要做到穿行调度, 那么必然T1要在T2前调度
  4. 可以将调度表示为:  S = R1(A),W1(B); R2(A), W2(B)
  5. 以上公式 R1,W1是事务1的执行序列, R2,W2是事务2的执行序列
  6. 可以看到调度是单位虽然是事务, 但是具体执行的最小操作却是事务的执行序列

利用优先图检测冲突是否可串行化:

  1. 基本思想是按照资源的操作顺序对事务进行排序
  2. 以资源为单位, 每个资源的操作顺序进行一词事务的顺序的划分, 构建成图结构, 图的节点是事务
  3. 多个资源构建出不同的顺序, 如果图形成了环, 说明了事务1不断优先于事务2先执行, 同时事务2还优先于事务1先执行!这是个可能的!从而就无法将冲突进行串行化

http://www.lryc.cn/news/146278.html

相关文章:

  • 人员着装识别算法 yolo
  • Linux:权限
  • Unity记录4.3-存储-点击Tilemap保存或读取区块
  • 【小吉测评】哔哩哔哩接入AI?!效果如何?
  • 微信开发之一键踢出群聊的技术实现
  • 基于Spring Boot 的 Ext JS 应用框架之coworkee
  • HOT100打卡—day10—【DP+多维DP】—最新8.29(剩6题)
  • 【不会用这个工具,你的Linux服务器就是个摆设!】
  • 09 生产者分区机制
  • 亚马逊鲲鹏系统是怎么操作测评的
  • 电脑上的视频如何导入苹果手机?
  • tsmc standard cell命名规则
  • 基于ssm医院在线挂号预约系统源码和论文
  • mysql binlog 浅谈
  • three.js(八):内置的三维几何体
  • IDEA 性能优化
  • react 获取表单中输入框的值
  • [虚幻引擎 UE5] EditableText(可编辑文本) 限制只能输入数字并且设置最小值和最大值
  • Docker技术--Docker容器管理
  • three.js(七):内置的二维几何体
  • golang-bufio 缓冲读
  • 前端 js实现 选中数据 动态 添加在表格中
  • MySQL—MySQL主从如何保证强一致性
  • Lora升级!ReLoRa!最新论文 High-Rank Training Through Low-Rank Updates
  • gateway动态路由和普通路由+负载均衡,借助eureka
  • HTTP原理与实现
  • 现在软件开发app制作还值得做吗
  • java八股文面试[JVM]——类初始化过程
  • 什么是SQL注入攻击,解释如何防范SQL注入攻击?
  • StringBuilder类分享(2)