v多用户数据库系统
允许多个用户同时使用的数据库系统
n飞机定票数据库系统
n银行数据库系统
n特点:在同一时刻并发运行的事务数可达数百上千个
v多事务执行方式
(1)事务串行执行
n每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行
n不能充分利用系统资源,发挥数据库共享资源的特点
(2)交叉并发方式(Interleaved Concurrency)
n在单处理机系统中,事务的并行执行是这些并行事务的并行操作轮流交叉运行
n单处理机系统中的并行事务并没有真正地并行运行,但能够减少处理机的空闲时间,提高系统的效率
(3)同时并发方式(simultaneous concurrency)
n多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行
n最理想的并发方式,但受制于硬件环境
n更复杂的并发方式机制
v事务并发执行带来的问题
n会产生多个事务同时存取同一数据的情况
n可能会存取和存储不正确的数据,破坏事务隔离性和数据库的一致性
v数据库管理系统必须提供并发控制机制
v并发控制机制是衡量一个数据库管理系统性能的重要标志之一
并发控制的概述
v事务是并发控制的基本单位
v并发控制机制的任务
n对并发操作进行正确调度
n保证事务的隔离性
n保证数据库的一致性
v并发操作带来的数据不一致性
1.丢失修改(Lost Update)
2.不可重复读(Non-repeatable Read)
3.读“脏”数据(Dirty Read)
v记号
nR(x):读数据x
nW(x):写数据x
v数据不一致性:由于并发操作破坏了事务的隔离性
v并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性
v对数据库的应用有时允许某些不一致性,例如有些统计工作涉及数据量很大,读到一些“脏”数据对统计精度没什么影响,可以降低对一致性的要求以减少系统开销
v并发控制的主要技术
n封锁(Locking)
n时间戳(Timestamp)
n乐观控制法
n多版本并发控制(MVCC)
v封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁
v加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。
v封锁是实现并发控制的一个非常重要的技术
v一个事务对某个数据对象加锁后究竟拥有什么样的控制由封锁的类型决定。
v基本封锁类型
n排它锁(Exclusive Locks,简记为X锁)
n共享锁(Share Locks,简记为S锁)
排它锁
v排它锁又称为写锁
v若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁
v保证其他事务在T释放A上的锁之前不能再读取和修改A