清华大学数据库access第11章并发控制精品PPT课件
合集下载
11并发控制-文档资料

数据库技术
11.1 事务的基本概念
定义 是用户定义的一个数据库操作序列,这些操作要么全做要么 全不做,是一个不可分割的工作单位 事务和程序比较
在关系数据库中,一个事务可以是一条或多条SQL语句,也
可以包含一个或多个程序。一个程序通常包含多个事务
SQL Server 中事务分类
(1)系统事务:一条语句就是一个事务 (2)用户定义事务:
并行操作:在单处理机系统中,事务的并行执行 实际上是这些并行事务的操作轮流交叉进行。
并发操作举例
考虑飞机订票系统。设有两个订票点,机票余票 A=15。
甲售票点
取A=15 修改A=A-1
乙售票点
取A=15 修改A=A-1
写回数据库A=14
写回数据库A=14
T
结果明明卖出两张机票,数据库中机票余额只减少1
并发操作带来的数据不一致性
丢失修改(Lost Update) 不可重复读(Non-repeatable Read)
读“脏”数据(Dirty Read)
记号
R(x):读数据x W(x):写数据x
1. 丢失修改
两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1
提交的结果,导致T1的修改被丢失。
T1 ① R(A)=15 T2
②
③ A←A-1 W(A)=14 ④
R(A)=15
A←A-1 W(A)=14
丢失修改
2. 不可重复读
不可重复读是指事务 T1读取数据后,事务T2 执行更新操作,使T1无
法再现前一次读取结果。 T1 ① R(A)=50 R(B)=100 求和=150 ② R(B)=100 T2
事务的ACID特性: 原子性(Atomicity)
11.1 事务的基本概念
定义 是用户定义的一个数据库操作序列,这些操作要么全做要么 全不做,是一个不可分割的工作单位 事务和程序比较
在关系数据库中,一个事务可以是一条或多条SQL语句,也
可以包含一个或多个程序。一个程序通常包含多个事务
SQL Server 中事务分类
(1)系统事务:一条语句就是一个事务 (2)用户定义事务:
并行操作:在单处理机系统中,事务的并行执行 实际上是这些并行事务的操作轮流交叉进行。
并发操作举例
考虑飞机订票系统。设有两个订票点,机票余票 A=15。
甲售票点
取A=15 修改A=A-1
乙售票点
取A=15 修改A=A-1
写回数据库A=14
写回数据库A=14
T
结果明明卖出两张机票,数据库中机票余额只减少1
并发操作带来的数据不一致性
丢失修改(Lost Update) 不可重复读(Non-repeatable Read)
读“脏”数据(Dirty Read)
记号
R(x):读数据x W(x):写数据x
1. 丢失修改
两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1
提交的结果,导致T1的修改被丢失。
T1 ① R(A)=15 T2
②
③ A←A-1 W(A)=14 ④
R(A)=15
A←A-1 W(A)=14
丢失修改
2. 不可重复读
不可重复读是指事务 T1读取数据后,事务T2 执行更新操作,使T1无
法再现前一次读取结果。 T1 ① R(A)=50 R(B)=100 求和=150 ② R(B)=100 T2
事务的ACID特性: 原子性(Atomicity)
数据库并发控制-PPT精选文档

死锁的诊断
方法一.等待图法 数据库周期性地生成事务等待关系有向图, 若图中存在有向回路,则表明产生死锁,如:
方法二.超时法
• 若一个事务的等待时间超过了规定的时限,则系统认为 产生了死锁
• 缺点: 规定时限设置过短,则容易误判; 设置过长,则不能及时处理死锁。
破除死锁方法
某些事务必须回滚以破除死锁,一般选择回滚 带来代价最小的事务,释放该事务所持有的全 部锁,并撤销其对数据的修改操作。
规则
• 事务T在执行其任何read_item(X)或write_item(X)操作之 前,必须先发出一个lock_item(X)操作
• 事务T中所有read_item(X)和write_item(X)操作执行完之 后,都必须发出一个unlock_item(X)操作
共享/排他(读/写)锁
• Read_lock(X) • Write_lock(X)
T1
read_item(X); X:=X-N;
Write_item(X); Read_item(Y);
Y:=Y-N; Write_item(Y)
T2
Read_item(X); X:=X+M;
Write_item(X)
事务的特性
•原子性 •一致性 •隔离性 •持久性
事务状态和附加操作
• BEGIN_TRANSACTION • READ或WRITE • END_TRANSACTION • COMMIT_TRANSACTION • ROLLBACK(ABORT)
并发控制的必要性
• 更新丢失 • 暂时更新(脏读) • 错误求和 • 不可重复读
项X的值是错误的, 因为T1对它的更新 丢失了
事务T1因故障而必 须将X值
Access数据库应用基础教程 第11章 模块与VBA

清华大学出版社
函数
♣函数不仅能执行一定的命令,还能根据参
数计算出对程序有用的数值并且可以在表 达式中引用。函数的语法结构如下:
Function 函数名称() As 数据类型 变量声明 基本语句 函数名称=表达式? End Function
Access数据库应用基础教程
清华大学出版社
11.4 面向对象的程序设计
Access数据库应用基础教程
清华大学出版社
11.1 VBA程序设计基础
♣常量、变量和数组 ♣数据类型:
布尔型(Boolean)、日期型(Date)、字符串 (String)、货币型(Currency)、字节型 (Byte)、整数型(Integer)、长整型(Long)、 单精数型(Single)、双精数型(Double)以及 变体型(Variant)和用户自定义型。在VBA代码 编程环境中通过“Dim as”语句来定义数据类型。
Access数据库应用基础教程
清华大学出版社
第11章 模块与VBA
教学目标
教学重点
教学过程
2019年5月6日
Access数据库应用基础教程
清华大学出版社
教学目标
♣通过本章的学习读者应该掌握基本的VBA编
程环境,能够独立进行简单的VBA程序设计。
Access数据库应用基础教程
清华大学出版社
教学重点
♥ 按Alt+F11组合键 ♥ 在数据库窗口中选择“工具”|“宏”|“Visual Basic编辑 器”命令 ♥ 单击数据库窗口中的“模块”按钮,然后单击“新建” 按钮,或双击要查看或编辑的模块
Access数据库应用基础教程
清华大学出版社
VBA调试环境
♣ 在Microsoft Access中调试
数据库原理第11-2章DataBase

两段锁协议(续) “两段”锁的含义 两段”
事务分为两个阶段 第一阶段是获得封锁,也称为扩展阶段; 第一阶段是获得封锁,也称为扩展阶段; 第二阶段是释放封锁,也称为收缩阶段。 第二阶段是释放封锁,也称为收缩阶段。
An Introduction to Database System
两段锁协议(续)
例: 事务1的封锁序列 的封锁序列: 事务 的封锁序列:
An Introduction to Database System
小结(续)
数据库的并发控制以事务为单位 数据库的并发控制通常使用封锁机制 两类最常用的封锁 不同级别的封锁协议提供不同的数据一致性保证, 不同级别的封锁协议提供不同的数据一致性保证, 提供不同的数据共享度。 提供不同的数据共享度。 三级封锁协议
A=Y+1 写回A=3 写回 Unlock B Unlock A
Slock A 等待 等待 等待 等待 等待 Slock A 读A=3 Y=A Xlock B B=Y+1 写回B=4 写回 Unlock B Unlock A
A=Y+1 写回A=3 写回 Unlock A
Xlock B 等待 Xlock B B=X+1 写回B=3 写回 Unlock B
事务1遵守两段锁协议,而事务 不遵守两段协议 不遵守两段协议。 事务 遵守两段锁协议,而事务2不遵守两段协议。 遵守两段锁协议
An Introduction to Database System
两段锁协议(续)
并行执行的所有事务均遵守两段锁协议, 并行执行的所有事务均遵守两段锁协议,则对这 些事务的所有并行调度策略都是可串行化的。 些事务的所有并行调度策略都是可串行化的。 所有遵守两段锁协议的事务,其并行执行的结果 所有遵守两段锁协议的事务, 一定是正确的 事务遵守两段锁协议是可串行化调度的充分条件, 事务遵守两段锁协议是可串行化调度的充分条件, 充分条件 而不是必要条件 可串行化的调度中, 可串行化的调度中,不一定所有事务都必须符合 两段锁协议。 两段锁协议。
(精品) 数据库原理课件:并发控制

17
并发控制
11.1 并发控制概述 11.2 封锁 11.3 封锁协议 11.4 活锁和死锁 11.5 并发调度的可串行性 11.6 两段锁协议 11.7 封锁的粒度 11.8 小结
18
11.2 封锁
一、什么是封锁 二、基本封锁类型 三、基本锁的相容矩阵
19
一、什么是封锁
封锁就是事务T在对某个数据对象(例如表、记录 等)操作之前,先向系统发出请求,对其加锁
T2
Xlock A 等待 等待 等待 等待 获得Xlock A 读A=15 A←A-1 写回A=14 Commit Unlock A
没有丢失修改
30
1级封锁协议
T1
① Xlock A 获得
② 读A=16 A←A-1 写回A=15
③
④ Rollback Unlock A
T2
读A=15
读“脏”数据
31
预防死锁的发生就是要破坏产生死锁的条件
46
死锁的预防(续)
预防死锁的方法 一次封锁法 顺序封锁法
47
2. 死锁的诊断与解除
允许死锁发生 解除死锁
由DBMS的并发控制子系统定期检测系统中是否存在 死锁
一旦检测到死锁,就要设法解除
48
并发控制
11.1 并发控制概述 11.2 封锁 11.3 封锁协议 11.4 活锁和死锁 11.5 并发调度的可串行性 11.6 两段锁协议 11.7 封锁的粒度 11.8 小结
与前一次不同的值。 2. 事务2删除了其中部分记录,当事务1再次读取数据时,
发现某些记录神密地消失了。 3. 事务2插入了一些记录,当事务1再次按相同条件读取
数据时,发现多了一些记录.
后两种不可重复读有时也称为幻影现象(phantom row)
并发控制
11.1 并发控制概述 11.2 封锁 11.3 封锁协议 11.4 活锁和死锁 11.5 并发调度的可串行性 11.6 两段锁协议 11.7 封锁的粒度 11.8 小结
18
11.2 封锁
一、什么是封锁 二、基本封锁类型 三、基本锁的相容矩阵
19
一、什么是封锁
封锁就是事务T在对某个数据对象(例如表、记录 等)操作之前,先向系统发出请求,对其加锁
T2
Xlock A 等待 等待 等待 等待 获得Xlock A 读A=15 A←A-1 写回A=14 Commit Unlock A
没有丢失修改
30
1级封锁协议
T1
① Xlock A 获得
② 读A=16 A←A-1 写回A=15
③
④ Rollback Unlock A
T2
读A=15
读“脏”数据
31
预防死锁的发生就是要破坏产生死锁的条件
46
死锁的预防(续)
预防死锁的方法 一次封锁法 顺序封锁法
47
2. 死锁的诊断与解除
允许死锁发生 解除死锁
由DBMS的并发控制子系统定期检测系统中是否存在 死锁
一旦检测到死锁,就要设法解除
48
并发控制
11.1 并发控制概述 11.2 封锁 11.3 封锁协议 11.4 活锁和死锁 11.5 并发调度的可串行性 11.6 两段锁协议 11.7 封锁的粒度 11.8 小结
与前一次不同的值。 2. 事务2删除了其中部分记录,当事务1再次读取数据时,
发现某些记录神密地消失了。 3. 事务2插入了一些记录,当事务1再次按相同条件读取
数据时,发现多了一些记录.
后两种不可重复读有时也称为幻影现象(phantom row)
ch11 数据库管理与安全 Access数据库应用基础教程(第三版) 教学课件

读取数据 更新数据 插入数据 删除数据
查看表和查询中的数据 查看和修改表和查询中的数据,但并不向其中插入数据或删除其中的数据 查看表和查询中的数据,并向其中插入数据,但不修改或删除其中的数据 查看和删除表和查询中的数据,但不修改其中的数据或向其中插入数据
11.2.2 新建Microsoft Access工作组信息文件
11.2.4 通过向导建立用户组安全机制
对大型数据库设置用户级安全机制非常复杂,使用“用户级 安全机制向导”可以简化这一操作过程。“用户级安全机制向 导”可以快速完成Access数据库安全机制设置。此外,通过实 施“用户级安全机制向导”的通用安全方案,用户很少需要使 用“工具”|“安全”命令,甚至可以不用。
Access数据库中的权限类型
新建Microsoft Access工作组信息文件
Access的账号管理
通过向导建立用户组安全机制
修改和删除工作组信息
11.2.1 Access数据库中的权限类型
在用户级安全机制中,系统为不同级别的用户设
置了不同的权限。用户的任何操作将被限制在其所具
有的权限中。如表11-1所示是在Access数据库中可以为
Microsoft Access用户级安全机制类似于在服务器或主机系 统上看到的用户级安全机制。使用密码和权限,可以允许或限 制个人、组(由个人组成)对数据库中对象的访问。安全账户定义 了哪些用户和哪些组(由用户组成)可以访问数据库中的对象。这 一信息称为工作组,存储在工作组信息文件中。
使用用户级安全机制主要有以下两个原因:
11.1.1 数据库的压缩和恢复
数据库作为一个容器,管理着其内部的所有对象以及VBA程序。为了 确保数据库的正常运行,有必要对数据库进行定期的压缩和恢复。
Access数据库应用基础教程(第三版)ch11简明教程PPT课件

2015年6月11日星期四
7
11.2 模块概述
• 类模块 类模块是可以包含新对象的定义的模块,一个类的每个实例 都新建一个对象。在模块中定义的过程为该对象的属性和方 法。Access 2010中的类模块可以独立存在,也可以与窗体 和报表同时出现。所以,可以将类模块分3类。 (1)自定义类模块。 (2)窗体类模块。 (3)报表类模块。
宏和VBA都可以实现操作的自动化。但是,在应用的过 程中,是使用宏还是使用VBA,得根据实际的需要而定。 宏和VBA的作用
• 对于简单的细节工作,打开或关闭窗体,使用宏是一种很方 便的方法,它可以迅速地将已经创建的数据库对象联系在一 起。 • 对于复杂的操作,如数据库的维护、使用内置函数或自行创 建函数、处理错误消息、创建或处理对象、执行系统级的操 作,一次处理多条记录等,宏是难以做到的,这种情况下, 应当使用VBA进行编程。
2015年6月11日星期四
12
11.2 模块概述
图11.2 Visual Basic编辑器
2015年6月11日星期四
13
11.2 模块概述
(2)系统默认创建一个模块1。如果想再创建一个模块, 只需在图11.2所示的VBA编辑器中选择“插入”菜单中 的“模块”命令,Access 2010将自动新建一个模块定 义窗口。 (3) 在其中输入下列代码,如图11.3所示。
Sub Hello() MsgBox prompt:=”Hello,欢迎使用Access 2010!” End Sub
2015年6月11日星期四
14
11.2 模块概述
图11.3 编写代码
2015年6月11日星期四 15
11.2 模块概述
(4)单击窗体上的 按钮,命名保存此模块为“Hello模块”,如图 11.4 所示。在数据库管理窗口
数据库原理与应用第9-11章查询处理、数据库恢复和并发控制-PPT精品课件

2. 作选择操作
➢依次读入连接后的元组,按照选择条件选取满足要求的记录 ➢假定内存处理时间忽略。读取中间文件花费的时间(同写中间文件
一样)需5×104s ➢满足条件的元组假设仅50个,均可放在内存
3. 作投影操作
➢把第2步的结果在Sname上作投影输出,得到最终结果 ➢第一种情况下执行查询的总时间≈105+2×5×104≈105s ➢所有内存处理时间均忽略不计
2. 读取中间文件块,执行选择运算,花费时间也为50s。 3. 把第2步结果投影输出。
第二种情况总的执行时间≈105+50+50≈205s
三、 第三种情况
Q3=πSname(Student σo='2'(SC))
假定数据库中有1000个学生记录,10000个选课记录 其中选修2号课程的选课记录为50个
系统可以用多种等价的关系代数表达式来完成这一查询
Q1=πSname(σStudent.Sno=SC.Sno∧o='2' (Student×SC)) Q2=πSname(σo='2' (Student SC)) Q3=πSname(Student σo='2'(SC))
元组指针,再通过元组指针在查询表上找到目标元组。选择率低 时有优势,选择率高时不如全表扫描
2.连接操作的实现
连接操作最常用、最耗时 例:select * from student,sc
where student.sno=sc.sno
嵌套循环算法——最简单可行。根据外层循环student的每一个元组, 检索内层循环sc中的每一个元组并匹配。 排序-合并算法——等值连接常用算法。先对连接条件属性分别排序, 再连接。 索引连接算法 Hash join算法——把连接属性作为hash码。先创建hash表,再连接。