【CMU15-445 Part-16】Concurrency Control Theory

news2024/11/20 8:44:49

Part16-Concurrency Control Theory

架构概念

Untitled

Transcations

txn就是通过在数据库系统中执行一系列操作(sql queries)来执行某种更高级的功能(应用程序所执行的功能)。

Transcations in SQL

一个新的事务开始 with BEGIN,txn结束with COMMIT / ABORT或者ROLLBACK

如果是COMMIT,要么保存事务的所有改变然后commit,或者数据库系统表示不能commit;commit并不意味着你就commit

如果是abort,自begin开始所做的修改都会被回滚。abort可能是自发的self-inflicted 或者DBMS告诉你这个事务需要中止

Correctness Criteria : ACID

  • Atomicity:原子性,事务的所有做要么都发生,要么都不发生
  • Consistency,一致性
  • Isolation:隔离性,txn之间隔离执行
  • Durability:持久性,事务提交,修改保存,不会丢失

Atomicity of TXN

  • commit after completing all actions
  • abort after excuting some actions

确保原子性的方法

  1. Logging,预写日志Write Ahead Logging,DBMS log 所有的actions,在中止的时候来undo这些操作,维护undo records in mm and disk
  2. Shadow Paging:对每个事务在磁盘上制作一份该数据库文件的副本,所有的修改都在副本上执行,事务提交的时候只需要更改指针指向该副本,表示现在这个副本是该数据的主版本。

logging in MM可以很快的恢复,on Disk 可以处理hard crash之后的recovery

Consistency

Database is logically correct → 查询的结果也是txn logically correct

Database Consistency

数据库要对现实世界准确建模通过integrity constraints (完整性约束)来保证一致性

Transaction Consistency

是application的责任,DBMS只能看到read 或者 write

Isolation of Transactions

隔离性为了更好的programming,实现隔离性一般通过并发控制协议

Mechanisms for Ensuring Isolation

pessimistic protocal 悲观协议

optimistic protocal 乐观协议

Untitled

Correctness

如何确保一个schedule是正确的

也就是可串行化:某个schedule的执行结果等同于按顺序执行的结果,那么说这种执行顺序的schedule是正确的,也就是serializable schedule 可串行化的执行计划。

如果T1先执行,后面是T2,T1先被提交,是strict serializeability 严格可串行化。

Interleaved Execution Anomalies

R-W W-R W-W

Unrepeatable Reads

不可重复读:试着去读取同一个对象的时候得到的值并不相同,实际是read-write conflicts

Untitled

Dirty Reads

脏读:read-write冲突,reading uncommitted Data,读未提交,读了脏数据。

Untitled

W-W Conflicts

写写冲突,overwrting uncommitted data,覆写未提交的数据。

Untitled

Conflict Serializability

如果两个schedule被认为是冲突等价conflict equivalent,如果这两个调度涉及相同事务的相同操作,每一对冲突的操作在两个调度中的顺序都相同。

Untitled

冲突等价(ConflictEquivalence) 可串行化调度(Serializable Schedules)_软件工程小施同学的博客-CSDN博客

冲突可串行化调度

通过交换不冲突操作的顺序来弄清楚该schedule是否是冲突可串行化,最终得到一个可顺序执行的调度

Untitled

Dependency Graph

依赖图或者叫precedence graph 优先图,如果一个事务中的某些操作和另外一个事务的操作有冲突,Oi早于Oj,则Ti→Tj是一条边,如果有环则是不可串行化。

并不是conflict serializable,但是仍然能够得到和按顺序执行事务的相同结果和相同的数据库状态,这就是ViewSerializability

Untitled

View Serializability

屏幕打印看到的结果和实际最终的结果不一致,要追求看到的和实际的一致。

从视觉角度上来看 这两种执行顺序所达到的效果是等同的。但是要知道T3最后W(A)

Untitled

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

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

相关文章

adb详细教程(四)-使用adb启动应用、关闭应用、清空应用数据、获取设备已安装应用列表

adb对于安卓移动端来说,是个非常重要的调试工具。本篇介绍常用的adb指令 文章目录 一、启动应用:adb shell am start二、使用浏览器打开指定网址:adb shell am start三、杀死应用进程adb shell am force-stop/adb shell am kill四、删除应用所…

【c++_containers】10分钟带你学会list

前言 链表作为一个像是用“链子”链接起来的容器,在数据的存储等方面极为便捷。虽然单链表单独在实际的应用中没用什么作用,但是当他可以结合其他结构,比如哈希桶之类的。不过今天学习的list其实是一个带头双向链表。 言归正传,让…

FFmpeg 基础模块:容器相关的 API 操作

目录 AVFormat 模块 AVFormat 前处理部分 AVFormat 读写处理部分 小结 思考 FFmpeg 目录中包含了 FFmpeg 库代码目录、构建工程目录、自测子系统目录等,具体内容如下: 现在你知道 FFmpeg 的源代码目录中都包含了哪些内容,在之后使用 FFm…

Springcloud支付模块

客户端消费者80 order 微服务提供者8001 payment 订单模块可以调动支付模块 步骤: 1、建moudle 2、改写pom 3、写yml 4、主启类 5、业务类

overleaf在线编辑工具使用教程

文章目录 1 用 orcid注册overleaf获取模板2 使用模板 1 用 orcid注册overleaf获取模板 通常来说,在期刊投稿网站information for author中找template 。下载压缩包后上传到over leaf中。 加入找不到官方模板,用overleaf中的 2 使用模板 .bib文件&…

Go语言中的指针介绍

Go语言中的指针 文章目录 Go语言中的指针一、Go语言中的指针介绍1.1 指针介绍1.2 基本语法1.3 声明和初始化1.4 Go 指针的3个重要概念1.4.1 指针地址(Pointer Address)1.4.2 指针类型(Pointer Type)1.4.3 指针取值(Poi…

【CMU15-445 Part-15】Query Planning Optimization II

Part15-Query Planning & Optimization II Selection Statistics 维护每张表中的基本主要信息也就是tuple数量 N R N_R NR​以及每个属性中不同值的数量 V ( A , R ) V(A,R) V(A,R), N R N_R NR​关系R中的元组数量,单独维护,不能用pag…

Elasticsearch:ES|QL 查询语言简介

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将尽最大努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。在目前的 Elastic Stack 8.10 中此功能还没有提供。 Elasticsearch 查询语言 (ES|…

3D孪生场景搭建:3D漫游

上一篇 文章介绍了如何使用 NSDT 编辑器 制作模拟仿真应用场景,今天这篇文章将介绍如何使用NSDT 编辑器 设置3D漫游。 1、什么是3D漫游 3D漫游是指基于3D技术,将用户带入一个虚拟的三维环境中,通过交互式的手段,让用户可以自由地…

RK3568平台开发系列讲解(AI篇)车辆检测车道线识别可行驶区域分割 模型对比检测结果

🚀返回专栏总目录 文章目录 模型对比检测结果 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在当今的自动驾驶领域,车辆检测、车道线识别,可行驶区域分割等任务起着至关重要的作用。车辆检测…

Labview 实战 99乘法表

基于新手小白,使用Labview实现99乘法表,敢于发表自己的一点方法,还请各位大侠放过! 如下: 运行效果如下: 思路为:将要显示出来的数据,全部转换为字符串形式,再塞入到数组…

搭建在线python运行环境

常遇到需要一个小工具,比如生成作息时间表,今天就搭建一个可在线使用的python运行环境 当然也可以交给ChatGPT完成 1、安装canda wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.03-Linux-x86_64.shyum install -y bzi…

黑马点评-01基于Redis实现短信登陆的功能

环境准备 当前模型 nginx服务器的作用 手机或者app端向nginx服务器发起请求,nginx基于七层模型走的是HTTP协议,可以实现基于Lua直接绕开tomcat访问Redis nginx也可以作为静态资源服务器,轻松扛下上万并发并负载均衡到下游的tomcat服务器,利用集群支撑起整个项目 使用nginx部…

volatile使用方法

volatile使用方法 编译优化。使用等级3的话,可能将优化了一些变量。 这为什么会开启等第三呢?这是关于单片机的内存容量比较小,所以开启优化的话,可以可以省一些空间,但是如果。会出现些变量的问题,需要通过…

基于A4988/DRV8825的四路步进电机驱动器

概述 简化板的CNC sheild V3.0,仅保留步进电机速度与方向的控制引脚STEP/DIR、使能端EN、芯片供电VCC\GND,共计11个引脚。PCB四周开设四个M3通孔,以便于安装固定。此外,将板载的焊死的保险丝更改为可更换的保险座保险丝&#xff…

Linux系统之安装cook菜谱工具

Linux系统之安装cook菜谱工具 一、cook菜谱工具介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查系统是否安装pnpm 四、部署Node.js环境4.1 下载Node.js安装包4.2 解压Node.js安装包4.3 复制二进制…

蓝桥杯每日一题2023.10.6

题目描述 门牌制作 - 蓝桥云课 (lanqiao.cn) 题目分析 #include<bits/stdc.h> using namespace std; int ans; int main() {for(int i 1; i < 2020; i ){int x i;while(x){int a x % 10;if(a 2)ans ;x / 10;}}cout << ans;return 0; } 题目描述 既约分数…

Python3操作Redis最新版|CRUD基本操作(保姆级)

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 Python3数据科学包系列(三):数据分析实战 Win11查看安装的Python路…

数据结构P46(2-1~2-4)

2-1编写算法查找顺序表中值最小的结点&#xff0c;并删除该结点 #include <stdio.h> #include <stdlib.h> typedef int DataType; struct List {int Max;//最大元素 int n;//实际元素个数 DataType *elem;//首地址 }; typedef struct List*SeqList;//顺序表类型定…

一年一度的国庆节又结束了

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…