第 9章 网络数据管理 1
第 9章 网络数据管理
9.1 网络数据库的并发控制
9.2 网络数据库的安全机制
9.3 网络数据库的访问控制
9.4 网络数据存储
9.5 网络环境下数据备份与恢复
9.6 Web数据管理
第 9章 网络数据管理 2
9.1 网络数据库的并发控制
9.1.1 事务
9.1.2 并发控制的必要性
9.1.3 基于锁的并发控制技术
9.1.4 其它并发控制技术
第 9章 网络数据管理 3
9.1.1 事务
并发控制 是指在网络环境下对数据库的并发操作进行
规范的机制。
并发控制的作用 主要是协调同一时间访问同一数据库
文件的多个事务之间的关系,防止这些事务之间发生冲突。
事务 ( transaction)是数据库的逻辑工作单元,它是
一组对数据的操作序列。事务是并发控制的基本单位。
事务具有以下四个基本特性:
? 原子性
? 一致性
? 隔离性
? 持续性
第 9章 网络数据管理 4
9.1.2 并发控制的必要性
数据库并发操作导致数据不一致性的三种情况:
1,丢失更新
当两个事务 T1和 T2读入同一数据,并发执行修改操作时,
T2把 T1或 T1把 T2的修改结果覆盖掉,造成了数据的 丢失更
新 ( lost update)问题,导致数据的不一致。它是由于两个
事务对同一数据并发写入引起的,称为写-写冲突。
第 9章 网络数据管理 5
9.1.2 并发控制的必要性
2,脏读
事务 T2读取了 T1更新后的数据 R,其后 T1由于某种原因
撤销修改,数据 R恢复原值,导致 T2得到的数据与数据库的
内容不一致。这种由于一个事务读取另一个更新事务尚未提
交的数据引起的不一致问题,被称为 脏读 ( dirty read)。
3,不可重读
事务 T1读取数据 R后,T2读取并更新了 R,当 T1再次读
取 R时,得到的两次读取值不一致,这种现象被称为 不可重
读 ( unrepeatable read)。
第 9章 网络数据管理 6
9.1.3 基于锁的并发控制技术
基于锁的并发控制是 事务对数据操作前必须获得对该数
据的锁,完成操作后在适当时候释放锁,而得不到锁的事务
处于等待状态。
锁 是数据项上的并发控制标志,它 有两种类型:
? 共享锁( Shared Lock,简称 S锁)
? 排它锁( Exclusive Lock,简称 X锁)
第 9章 网络数据管理 7
9.1.3 基于锁的并发控制技术
1,封锁协议
系统中的事务在加锁和释放锁时,都必须遵守一组规则,
这组规则称为 封锁协议 。
? 一级封锁协议
一级封锁协议 是事务在修改数据 R之前必须对其加 X锁,
直到事务结束,如果未能获得 X锁,则该事务进入等待状态,
直至获得 X锁才能执行。
? 二级封锁协议
二级封锁协议 是在一级封锁协议的基础上,规定事务在
读取数据 R之前必须对其加 S锁,读完后释放 S锁。
第 9章 网络数据管理 8
9.1.3 基于锁的并发控制技术
? 三级封锁协议
三级封锁协议 是在一级封锁协议的基础上,规定事务在
读取数据 R之前必须对其加 S锁,读完后并不释放 S锁,直到
整个事务结束后才释放。
2,封锁粒度
封锁粒度 是指封锁的数据对象的大小。
封锁粒度与系统的并发度和并发控制的开销密切相关。
封锁粒度越小,并发度越高,并发控制的系统开销也就越大。
反之,封锁粒度越大,并发度越低,并发控制的系统开销也
就越小。
第 9章 网络数据管理 9
9.1.3 基于锁的并发控制技术
3,死锁
如果一个事务申请锁未成功,则须等待其它事务释放锁,
这就形成了事务之间的等待关系。当事务中出现循环等待时,
如果不加干预,就会一直等待下去,这种状态称为 死锁 。
( 1)死锁的检测和处理
死锁检测的方法一般有以下两种:
? 超时法
? 等待图法
第 9章 网络数据管理 10
9.1.3 基于锁的并发控制技术
数据库管理系统对死锁一般采用如下策略:
? 在循环等待的事务中,选择一个事务作为牺牲者,
给其他事务“让路”。
? 回滚牺牲的事务,释放其获得的锁即其他资源。
? 将释放的锁让给等待它的事务。
选取牺牲事务的方法有以下几种:
? 选择最迟交付的事务作为牺牲者。
? 选择获得锁最少的事务作为牺牲者。
? 选择回滚代价最小的事务作为牺牲者。
第 9章 网络数据管理 11
9.1.3 基于锁的并发控制技术
( 2)死锁的预防
数据库系统中预防死锁常用的方法有以下两种:
? 一次加锁法
一次加锁法是在事务执行前,对要使用的所有
数据对象一次加锁并要求加锁成功,只要一个加锁
不成功,即表示本次加锁失败,立即释放所有加锁
成功的数据对象,然后重新开始加锁。
? 顺序加锁法
顺序加锁法是对所有可能封锁的数据对象按序
编号,规定一个加锁顺序,每个事务都按此顺序加
锁,释放时则按逆序进行。
第 9章 网络数据管理 12
9.1.4 其它并发控制技术
1,基于时间戳的并发控制技术
为了区别事务开始执行的先后,每个事务在开始执行时,
都由系统赋予一个唯一的、随时间增长的整数,称为 时间戳
( TS,Time Stamp)。
基于时间戳的并发控制是 按时间戳的顺序对冲突进行处
理,使一组事务的交叉执行等价于一个由时间戳确定的串行
序列,其目的是保证冲突的读操作和写操作按照时间戳的顺
序执行。
第 9章 网络数据管理 13
9.1.4 其它并发控制技术
基于时间戳的并发控制遵循以下准则:
? 事务开始时,赋予事务一个时间戳。
? 事务的每个读操作或写操作都带有该事务的时间戳。
? 对每个数据项 R,最后一次读该数据项的时间戳值为 RTM
( R),最后一次写该数据项的时间戳值为 WTM( R)。
? 当事务对数据项 R请求读操作时,设该读操作的时间戳为
TS,如果 TS<WTM( R)则拒绝该读操作,事务回滚,并
用新的时间戳重新启动该事务,否则执行读操作,若原
RTM( R) <TS,则更新 RTM( R)为 TS。
? 当事务对数据项 R请求写操作时,设该写操作的时间戳为
TS,如果 TS<RTM( R)或 TS<WTM( R)则拒绝该写操
作,事务回滚,并用新的时间戳重新启动该事务,否则执
行写操作并把 WTM( R)置为 TS。
第 9章 网络数据管理 14
9.1.4 其它并发控制技术
2,基于版本的并发控制技术
基于版本的并发控制方法是将版本管理引入到数据库应
用中。 数据库版本 是数据库的一个视图,它反映了数据库在
某种情况下的数据存储情况。 多用户版本 是指同一数据库在
一次完整的设计过程中,对不同用户及同一用户在此过程中
的不同时刻的多个数据视图。
在应用开始时,每个应用将初始数据读至自己的工作区,
形成该任务的初始版本。在任务的执行过程中,每一应用在
自己的工作区内对数据进行操作,利用版本来记录每次操作
的结果。由于操作是在各自的工作区内完成,所以可以并行
进行,互不干扰。各任务结束后,将各任务的最终版本进行
合并。
第 9章 网络数据管理 15
9.1.4 其它并发控制技术
3.基于事务类的并发控制技术
利用存储过程来访问数据库,假设每个存储过程属于一
个互不相交的 冲突类 。一个冲突类里的过程仅存取数据库中
的某一特定部分,而不同的冲突类则工作在数据库的不同部
分。
对每一个冲突类 C均存在一个先进先出( FIFO,First In
First Out)的类队列( CQ,Class Queue)。当一个事务 T
开始且 T∈ C,T被加入到 CQ中。若 T是队列 CQ中唯一的事
务,则 T将被提交给数据管理器去执行;若在队列 CQ中还有
其它的事务,则 T等待。当一个事务成为队列中的第一个事
务并提交后,则从相应的队列中移出该事务,队列中下一个
在等待的事务被提交执行。