第二章 事务

1 并发与隔离

1.1 事务隔离级别

1.2 悲观锁与乐观锁

1.3 多版本并发控制

目前多数的乐观锁都基本于版本实现,多版本并发控制(Multi-Version Concurrent Control)是较为成熟的一种乐观锁实现。

1.3.1原理

MVCC是并发条件下实现事务隔离的有效手段。其本质是快照读:每个元组维护多个版本的快照,每个事务只能看到在此之前提交的事务插入或修改的元组。这样避免了读-读冲突和读-写冲突,极大地提高了并发度。

所谓的“在此之前”有两情况:

(1) 在事务的当前命令之前。实际上对应“读已提交”的隔离级别。

(2) 在事务开始之前。实际上对应“序列化”的隔离级别。

MVCC对并发冲突处理如下:

(1) 读读

(2) 读写

(3) 写读

(4) 写写

MVCC实现的序列化不是绝对意义上的序列化。MVCC与谓词约束的区别在于,MVCC限制读的范围,谓词约束限制写的范围。

1.3.2 实现

1.4 锁

1.4.1 需要锁的场景

在使用了MVCC进行隔离之后,锁的使用场景大大减少了。但锁仍然是必要的。在MVCC环境中,需要锁的场景有:

(1) 多层结构下,对子节点进行写操作时,需在父节点做加锁保护。

(2)

1.4.2 共享/排它锁

1.4.2.1

1.4.2.2 共享锁升级

读锁可升级为写锁,等价于读已提交。读锁不可升级为写锁,等价于可重复读。

1.4.3 意向锁

1.4.3.1 为什么要有意向锁

1.4.3.2 意向锁类型

(1) 要对某一子元素加共享锁,则先对其父对象加意向共享锁(IS)。

(2) 要对某一子元素加排他锁,则先对其父对象加意向排他锁(IX)。

对于非叶子元素,理论上还存在以下4种意向锁:

(3) 该元素同时加共享锁与意向共享锁(SIS)。

(4) 该元素同时加共享锁与意向排他锁(SIX)。

(5) 该元素同时加排他锁与意向共享锁(XIS)。

(6) 该元素同时加排他锁与意向排他锁(XIX)。

但是,可以看到从强度而言:SIS=S, XIS=X, XIX=X,只有SIX有新的强度。所以实际上意向锁只有三种:IS, IX, SIX

1.4.4 偏序锁的一般化实现

1.4.5 锁管理

1.4.5.1 两阶段锁

1.4.5.2 死锁检测与处理

2 原子与持久化

2.1 撤销日志

事务的原子性一般通过撤销日志(undo log)实现。

2.2 重做日志

事务的持久化通过重做日志(redo log)实现。通过写redo log而不是直接将数据刷到磁盘的原因在于。日志是追加写的,速度要比数据的随机写要快速得多。

2.3 撤销/重做日志

2.3.1 具体形式

2.3.2 撤销/重做日志的实现

2.4 日志合并树

3 事务执行流程

时间: 2024-12-14 14:59:42

第二章 事务的相关文章

《番茄工作法图解》第二章阅读笔记

<番茄工作法图解>第二章 背景 通过执行一套相同的动作和准备程序,可以使大脑自我调整,进入执行某类事务的最佳状态. 多巴胺神经递质的职责之一是保持人的警觉性.一种理论解释为什么有些人常常多动,是因为大脑要弥补多巴胺产量的不足,从而增加了肾上腺素的产生. 要让注意力处于最佳状态,需要在半小时之间进行短暂休息,每周安排不超过40小时的工作计划.我的经验告诉我,采取可持续的步伐,是工作卓有成效的前提. 在短期记忆中信息通畅以声音形势存储.与此相对,在长期记忆中信息通常以语义形势存储.延迟回忆更容易记

高项3.7日第一次课,第一章信息化基础知识与第二章信息系统服务管理梳理

第一章 信息化的基础知识 1.国家信息化体系要素: 主要包括6要素,信息技术应用(龙头).信息资源(关键).信息网络(必要手段).信息技术产业(基础).信息化人才(成功之本).信息化法规政策和规范(保障). 2.电子政务: 电子政务建设的指导原则: (1)统一规划,加强领导. (2)需求主导,突出重点. (3)统一规划,拉动产业. (4)统一标准,保障安全. 主要任务: (1)电子政务网络由政务内网和政务外网构成,两网之间物理隔离,政务外网与互联网之间逻辑隔离.政务内网主要是副省级以上政务部门的

【PMP】Head First PMP 学习笔记 第二章 组织、约束和项目

第二章 组织.约束和项目 如果你希望正确地完成工作--最好有一个正确的组织. 项目联络人 项目联络人(project expediter),只是记录项目的进展情况,但是没有权利对项目做任何决策.他可能参与项目,但是并不管理任何事务. 不同类型的组织项目 职能型 项目经理的决策需要和职能经理确认 项目经理作为职能经理的助手,协助职能经理完成工作 项目经理大部分时间都用于行政任务,通常只有部分时间投入到项目管理中 在职能型组织中往往会有项目联络人 矩阵型 弱矩阵型 项目经理有一些经理有一些权利,但是

Laxcus大数据管理系统(5)- 第二章 数据组织

第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同时出于兼顾用户使用习惯和简化数据处理的目的,继续沿用了一些关系数据库的设计和定义,其中不乏对SQL做适量的修订.在这些变化中,核心仍然是以关系代数的理念去处理数据,以及类自然语言风格的数据描述.所以用户在使用体验上,和关系数据库相比,不会感觉到有太多的差异. 本章将介绍Laxcus数据结构的组成,并

Java Persistence with MyBatis 3(中文版) 第二章 引导MyBatis

MyBatis最关键的组成部分是SqlSessionFactory,我们可以从中获取SqlSession,并执行映射的SQL语句.SqlSessionFactory对象可以通过基于XML的配置信息或者Java API 创建. 我们将探索各种MaBatis配置元素,如dataSource,environments,全局参数设置,typeAlias,typeHandlers,SQL映射:接着我们将实例化SqlSessionFactory. 本章将涵盖一下内容: l  使用 XML配置MyBatis

brent ozar的sqlserver dba训练课程翻译——第二章:手动恢复数据库

备份的唯一原因 备份的唯一原因是我们可以还原 当我第一次成为sqlserver数据库管理员,只要备份工作都能成功运行,我就会觉得一切都很好.我会查看sqlserver代理,保证那些作业都在运行,然后就这样了. 我想只要发生灾难了,我只需要做一个恢复.这能有多难? 理论上,我们使用凯德拉的5个简单问题来测试我们的备份策略,并且我们要记住会导致dba被解雇的9个注意事项. 在实践中,有一些小问题会困扰我们.当出现问题的时候,我们是否要还原整个数据库——即只恢复几个表还是一个完整的数据库.有些人把生产

第二章 简单的HTTP协议

第二章 简单的HTTP协议 针对HTTP协议结构进行讲解 1.通过请求和响应的交换来达成通信目的 应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务器端角色. [请求报文]是由请求方法.URI.协议版本.请求首部字段.内容实体组成的. [响应报文]是由协议版本.状态码.状态码原因短语.响应首部字段.响应实体组成的. 2.HTTP是不保存状态的协议(无状态) HTTP 是一种不保存状态,即无状态协议.HTTP 协议自身不对请求和响应之间的通信状态进行保存.也就是说在 HTTP 这个级别,

Machine Learning In Action 第二章学习笔记: kNN算法

本文主要记录<Machine Learning In Action>中第二章的内容.书中以两个具体实例来介绍kNN(k nearest neighbors),分别是: 约会对象预测 手写数字识别 通过“约会对象”功能,基本能够了解到kNN算法的工作原理.“手写数字识别”与“约会对象预测”使用完全一样的算法代码,仅仅是数据集有变化. 约会对象预测 1 约会对象预测功能需求 主人公“张三”喜欢结交新朋友.“系统A”上面注册了很多类似于“张三”的用户,大家都想结交心朋友.“张三”最开始通过自己筛选的

关于《大道至简》第二章的收获

今天阅读了大道至简的第二章,这一章的标题是懒人造就了方法.文章以愚公和李冰作为例子,讲述了好的方法是如何产生的.由此我们可以想到身边的一些例子,假如我们要给一些学生出算数题,题量不大的情况下我们可以直接出题,当要求题量的时候这就是一个大工程了.为此,我们可以写一个简单的软件实现出题的功能.虽然写这个软件会花费一些时间,但是完成之后会省下很大的精力. 我们应该学会将源代码分写在几个文件中,而不是所有的都写在一起,因为都放在一个文件中,到了后期的维护可能会是很大的问题,因此Unit关键字出现了,将一