【CMU 15-445】Lecture 15: Concurrency Control Theory 学习笔记

从零开始学习使用 AI 欢迎踏入ClaudeCode未来世界,开启与AI协作的全新旅程。无论你是零基础新手、开发者,还是非程序员,都能通过实战项目快速掌握智能体协作技能——不再只是提问,而是指挥AI完成复杂任务。你将化身主角,在16个级别、200+实践中成长为高效创造者。真正的优势不再是会用工具,而是懂得如何让智能体为你工作。取代你的不是AI,而是会用AI的人。现在,故事从你开始👇 阅读详情


本节课主要介绍事务的概念和特性。

Definitions

事务是一组数据库操作(比如SQL语句)的集合,进一步可以抽象为对某些数据对象的读写操作序列。因为多个用户请求并发运行时,对数据对象的读写可能产生不一致的现象,所以需要事务及其机制辅助进行管制。
一个数据库中的所有事务需要满足以下几个性质:

  • 原子性:事务包含的操作要么全部执行要么全部不执行
  • 一致性:如果数据库在事务开始前是一致的,那么在该事务完成后也要确保数据库是一致的;数据库的一致性由用户指定, 比如银行转账时,数据库的一致性体现在两个账户的总额保持不变。
  • 隔离性:事务之间是相互隔离的,当有若干事务并发执行时,各事务间不影响,表现出与某种串行执行一样的结果。
  • 持久性:事务提交后,对数据库造成的影响应当是持久性的

ACID: Atomicity

通常可以采用两种方法实现事务的原子性:

  • Logging:DBMS为事务中已执行的操作记录上日志,并在事务异常终止时进行undo操作。
  • Shadow Paging:DBMS为每个事务单独分配pages进行修改,当事务正常提交后再更新进入数据库,如果事务异常终止,则只需要删除其对应的pages即可。这种做法不常用,因为它只在事务异常终止时的恢复阶段较方便,在正常情况下效率低于Logging。

ACID: Consistency

数据库一致性:数据库中的数据需要满足一些现实世界的约束(用户自定义的)以及一些整数约束(如年龄不应该为负数等等)
事务一致性:如果数据库在事务执行前是一致的,那么在事务提交后也应该一致,应用层应该使设计出来的事务满足这个特性

ACID: Isolation

DBMS确保事务间隔离,通过一些机制让正在执行的事务以为当前没有其他事务与自己并行执行。最简单的方式是串行执行事务,但是为了提高效率,当前的系统通常采用事务的并行执行。需要保证的是,并行执行的结果与串行执行的结果一致,从而实现并行隔离性。
并行调度器会产生许多并行执行方案,只有在并行执行方案的执行结果与某种串行执行方案的结果一致时,我们才认为这种执行方案是符合事务隔离性的,或者说这种并行执行方案是可串行化的。
可串行化的方案有两种:

  • 冲突可串行化
  • 视图可串行化

主要看冲突可串行化,如何判断一个执行方案是冲突可串行化的?
首先冲突是什么?冲突就是两个方案中的Read和Write操作前后冲突了,有以下三种情况:

  • Read-Write Conflicts (“Unrepeatable Reads”)
  • Write-Read Conflicts (“Dirty Reads”)
  • Write-Write Conflict (“Lost Updates”)

然后是,判断执行方案为冲突可串行化方案的方法,可以尝试构造这样一个有向图:顶点为所有事务、边为事务之间的冲突(冲突由两个事务的两个操作组成,边的方向由时间戳小的事务指向时间戳大的事务),如果为DAG,则该执行方案为冲突可串行化的方案。
如下图为冲突可串行化的执行方案:
在这里插入图片描述
如下图不是冲突可串行化的执行方案:
在这里插入图片描述

ACID: Durability

DBMS需要确保在系统断电时,已提交的事务所造成的影响可持久化,可采用Logging或Shadow Paging的方式,无论采用哪种方法,需要借助非易失性存储实现。

第28篇 sw放样特征矩形-圆-矩形学习笔记 本例演示三轮廓放样:先画中心对齐的100×100矩形草图,再在偏移100的基准面上绘制圆,最后在另一基准面画矩形。通过依次选择三个轮廓并正确设置连接点,实现矩形→圆→矩形的平滑过渡,注意连接点位置避免扭曲。 阅读详情

相关推荐

实战指南:轻松破解DataDome滑块验证码的关键步骤

本文详细介绍了破解DataDome滑块验证码的关键步骤,包括理解其工作原理、准备工作、参数获取与配置、完整破解流程及API调用。通过使用Capsolver服务和模拟真实用户行为,帮助开发者有效绕过这一反机器人机制,同时强调了法律与道德考量。

weixin_30415113的博客 478

CMU15-445-Spring-2023-Project #4 - 前置知识(lec15-20)

并发控制:如何避免同时更新记录时出现race?耐久性问题(恢复):断电时如何确保状态正确?

gongyuandaye的博客 2100

KVM环境下Tesla T4/v100 vGPU性能调优手册:显存分配策略与帧率限制解除

本文深入探讨了在KVM虚拟化环境中,针对NVIDIA Tesla T4和V100 GPU进行vGPU性能调优的实战策略。核心内容包括如何根据AI训练、科学计算等不同负载,精细规划显存分配策略,并详细介绍了通过修改sysfs参数解除帧率限制器(FRL)以释放硬件潜力的方法,旨在帮助用户实现虚拟化GPU资源的最大化利用。

cuda7parallel的博客 619

cmu15-445课程笔记

总结起来,cmake …用于配置并生成构建文件,而 make 用于实际执行构建,根据构建文件中的规则进行编译和链接。cmake:将 CMakeLists.txt 文件中的配置指令解析为适用于所选构建系统的构建文件。接下来我们可以在本机的编译器编写我们的代码。然后在服务器上编译和运行我们的代码。make: 在生成了构建文件后,编译项目的源代码并生成最终的可执行文件。1、下载安装Clion,安装C++编译环境。2、服务器装依赖包,安装Cmake。Clion远程连接服务器。

风中的默默 1万+

基于R语言的DICE模型实践技术应用;预测不同减排路径下的经济增长、碳排放量、气候变化程度以及社会福利变化

DICE模型是一个动态综合气候经济模型,由诺贝尔经济学奖得主William Nordhaus开发,用于评估气候变化对经济的影响以及不同减排政策的经济成本和效益。以下是一个关于DICE模型在气候变化影响评估中的实际应用案例,结合R语言代码进行讲解。

KY_chenzhao的博客 866

新手小白如何学习编程

学习目标推荐第一门语言优势网站 / APP 开发(前端)JavaScript浏览器原生支持,能快速做出可视化效果后端 / 服务器 / 数据分析Python语法简洁像英语,库多、应用广(入门友好)游戏开发先用电竞入门,再转专业引擎硬件 / 嵌入式(比如单片机)C 语言贴近硬件,行业标准办公自动化(Excel / 文档处理)Python快速解决重复工作(比如批量改文件)👉新手首选推荐。

2501_94331842的博客 2232

CMU 15-445 数据库导论笔记(一)

在本节课中,我们将要学习数据库系统导论课程的基本信息,并深入探讨关系模型的核心概念。课程将涵盖数据库管理系统的设计与实现,而本节课的重点是理解关系模型的基础知识,包括关系、元组、属性以及关系代数。本节课中本节课中我们一起学习了高级SQL的多个核心主题。我们探讨了如何使用聚合函数和GROUP BY对数据进行汇总分析,了解了不同数据库在字符串和日期操作上的差异。我们学习了如何通过ORDER BYLIMIT和OFFSET控制输出,以及如何将结果重定向到其他表。

龙哥盟 284

PMP第一章:引论介绍

PMP第一章:引论介绍 1.PMBOK指南概述和目的 项目管理标准 通用词汇 道德与专业行为规范 2.基本要素 项目 项目管理的重要性 项目、项目集、项目组合以及运营管理之间的关系 指南的组成部分 裁剪 项目管理商业文件 3.项目管理标准 标准是基于权威、惯例或共识而建立并用作模式或范例的文件。 标准确认了在大多数时候都被大多数项目视作良好实践的过程。 4.道德与专业行为规范 责任:对自己所做的决策或未做决策、所采取的行为或未采取行为,以及相应的后果,承担责任 尊重:对自己、他人和委托给自己的资源

zhengzaifeidelushang的博客 826

cmu 15-445学习笔记-1

关系型数据库的一个常用搞法就是在外键进行两个表的映射时使用一个中间表存储映射关系,来防止一对多的混乱(在做业务的时候如果某两个数据表的主键或者对应列是多对多的关系就可以使用一个中间表,使用中间表的化一般外键就直接干掉就可以了)一组属性关系被称为一个元组,值通常是原子(不可再分,原子性)或标量(vector和scalar对应,vector是向量,一般都是标量的数据,好进行标量进行运算),特殊值NULL是每个域的成员。十个数据可以拆成两个列族,例如十个数存在二维数组的两行在数据库中这是不同的数据库表。

m0_51765675的博客 906

把静态前端托管进 SAP BTP:HTML5 Application Deployer 与企业级内容部署全攻略

本文介绍了在SAP BTP Cloud Foundry环境中使用HTML5 Application Repository托管前端静态资源的工程化实践。通过HTML5 Application Deployer工具,结合MTA描述、路由配置和服务实例,实现前后端解耦和标准化部署。文章详细阐述了目录结构、关键配置文件、MTA编排以及构建部署流程,并针对大体积前端资源提供了GACD和异步上传两种解决方案。最后说明了如何与AppRouter协同工作,使部署内容可供终端用户访问。这套方法使前端更新无需重启后端,支持团队

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 154

Allegro如何进行四层板板层设计

板层的设计

weixin_42499230的博客 3189

【CMU 15-445】Lecture 17: Timestamp Ordering Concurrency Control 学习笔记

本节课主要介绍一些基于时间戳的并发控制协议。

juruo_c的博客 1199

SAP FICO 金税系统-金税->SAP接口功能开发说明书(接口字段)

SAP FICO 金税系统-金税->SAP接口功能开发说明书(接口字段)

我好像病了的博客 1257

【CMU 15-445】Lecture 16: Two-Phase Locking Concurrency Control 学习笔记

本节课主要介绍两阶段锁协议。

juruo_c的博客 1045

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

CMU 15-799:数据库系统专题课自学攻略——从 15-445 走向 Self-Driving DBMS(CS 自学指南)

本篇基于 CS 自学指南(cs-self-learning)[数据库系统栏目下的 CMU 15-799 课程条目](https://link.gitcode.com/i/e5553a7297be2561617650dd337d76f2),系统梳理这门 CMU 数据库高阶专题课的定位、两期开课内容、Spring 2022 版的具体作业形式,以及它与先修课 15-445、后续课 15-721 之间的衔

gitblog_01160的博客 954

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MySQL建库建表操作学习笔记

SQL(Structured Query Language,结构化查询语言)是用于在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。:用于定义对数据库对象(库、表、列、索引)的操作,如 CREATE、DROP、ALTER、RENAME、TRUNCATE 等。保存可变长度的字符串(可包含字母、数字以及特殊字 符)。:用于定义对数据库记录的操作,如 INSERT、DELETE、UPDATE、SELECT 等。:用于定义对数据库、表、字段、用户的访问权限和安全级别,如 GRANT、REVOKE 等。

Eternitycai的博客 221

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

2026.11.7 AI学习总结

110 你 14b 模型权重本身就要约 8.8GB,默认上下文(Ollama 在 16GB 卡上可能给到 4K)加上 KV Cache 就爆了。比如设成 2048,你输入了 500 个 token 的问题,那模型最多还能生成 1500 个 token 的回答。超出部分会被截断,模型就"看不见"了。4 如果 14b 跑起来后发现它"忘事",再逐步往上加,比如先试 4096。,根据注意力头的重要性动态分配缓存资源,重要的留显存,不重要的下沉。,单位是 token,表示模型这一次推理最多能同时"看到"多少内容。

qq_41181702的博客 366

【FreeRTOS源码学习笔记】任务创建

【FreeRTOS源码学习笔记】任务创建

2502_90565057的博客 459

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 405

邓明 Agent 系统面试-意图识别学习笔记

不要只是做意图识别而不做测评,就好像要评估 RAG 准确性,在接口服务要测试响应时延,超时控制等等,这里也要关注意图识别准确率,如果面试官认为项目指标太高是在吹牛,关键就是回答因为 Agent 解决的是特定领域的意图识别,识别场景单一,另外就是因为用户输入相对简单。意图识别影响 prompt/spec 的加载,意图识别影响上下文组织,意图识别影响工具选择,意图识别影响 prompt 建议,意图识别得到的意图不是让模型随机生成而是候选类别里去做选择。2.意图识别的原因,以及意图识别得到的是什么?

m0_57222081的博客 212

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 337

CMake学习

CMake如何编译成库?1. 为什么要有库?库就是预先写好,编译好的代码集合。存在的意义,1)避免重复造轮子和重复编译,库是,你的代码在编译时直接链接它,不需要把库的源码重新编译一遍,大大节省了编译时间。;2):编译成库让别人可以直接调用我的函数,但看不到cpp源码,看不到里面的逻辑。3):大项目可以拆分给不同的团队开发不同的库,最后拼在一起。静态库:就是在程序编译和链接阶段,把库里被用到的代码部分,像打包裹一样,直接复制粘贴到最终的可执行文件(如.exe或 Linux 下的无后缀文件)里面。

m0_56487684的博客 191

商业经济学学习资料

商业经济学学习资料

weixin_29403917的博客 279

将物理先验嵌入机器人学习:从经典力学到 VLA 与 WAM

本文综述了将物理先验嵌入机器人学习的三条路径:数据与表示、模型架构、训练损失,强调其位置决定约束效力。通过夹取软物体案例,阐明运动学、动力学、接触与材料特性在任务中的分层作用。指出物理先验非万能,需匹配实际条件;强约束可加速学习,但误用会引入偏差。提出“有效刚度”等概念,强调主动探测与参数辨识的重要性,并警示仅靠单一方法无法保障安全执行,需结合在线验证与控制闭环。

lovely_yoshino的博客 715

【学习笔记】51单片机 模块化编程

模块化编程:把各个模块的代码放在不同的c文件里,在.h文件里提供外部可调用函数的声明,在其他.c文件想使用其中的代码时,只需要#include"xxx.h"文件即可。传统方式编程:所有的函数均放在main.c中,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码组织和管理,而且很影响编程者的思路。使用LCD602液晶屏作为调试窗口,提供类似printf函数的功能,可实时观察单片机内部数据的变换情况,便于调试和演示。使用到的.h文件必须要放在编译器可寻找到的地方(工程文件夹根目录,安全目录,自定义)

2601_96469072的博客 221

Linux网络学习【深入理解多路转接epoll】

本文围绕 Linux 多路转接 epoll 展开,以“设计动机—核心机制—触发模式—代码实践”为主线,对比 select、poll 的监听管理与就绪检查方式,解析关注集合、就绪列表及核心接口,重点讲解水平触发与边缘触发的行为差异,以及边缘触发配合非阻塞读写的处理要点。结合多连接服务器实践,梳理事件注册、连接接收、部分收发、可写事件按需监听及断开清理流程,厘清就绪通知与操作完成的区别,分析常见错误与性能影响因素,帮助读者建立从事件循环到连接管理的完整认识,为高并发服务器与事件驱动框架开发打下基础。

承于所学,探技术之渊;以代码求政,寻成长之道。 1万+
上一篇: 【CMU 15-445】Lecture 13: Query Execution II 学习笔记
下一篇: 【CMU 15-445】Lecture 16: Two-Phase Locking Concurrency Control 学习笔记
juruo_c
博客等级 码龄6年 520粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值