11数据库第十一章并发控制
数据库原理之并发控制
数据库原理之并发控制并发控制是数据库管理系统中非常重要的一部分,它涉及到同时对数据库进行读写操作时的问题。
并发控制的目标是确保数据的一致性和可靠性,同时提高系统的性能和吞吐量。
在数据库中,同时进行读写操作可能导致以下问题:丢失修改、脏读、不可重复读和幻读。
并发控制的目标是解决这些问题,确保多个事务同时对数据库进行操作时,数据的一致性仍能得到保障。
为了达到并发控制的目标,数据库管理系统通常使用锁和事务的概念。
锁是数据库管理系统提供的一种机制,用于保护数据不被并发访问时产生的问题。
常见的锁有共享锁和排它锁。
共享锁允许多个事务同时读取数据,但阻止其他事务对数据进行修改。
排它锁禁止其他事务对数据进行读取和修改。
事务是一组数据库操作的逻辑单元,它将多个操作捆绑在一起,以确保它们能够作为一个原子操作运行。
事务具有四个属性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
并发控制主要关注隔离性这个属性。
数据库管理系统会使用不同的并发控制技术来保证事务的隔离性。
其中最常见的技术是两阶段锁协议和多版本并发控制(MVCC)。
两阶段锁协议分为两个阶段:加锁阶段和解锁阶段。
在加锁阶段,事务申请和获得需要的锁,确保操作的原子性。
在解锁阶段,事务释放已经持有的锁,为其他事务提供机会。
多版本并发控制(MVCC)是一种基于时间戳的并发控制技术。
每个事务在开始时会被分配一个唯一的时间戳,用于标识事务的顺序。
数据库中的每个数据项都有一个或多个版本,每个版本都有一个时间戳,用于标识该版本创建的时间。
事务只能读取在其开始之前创建的版本,从而避免了脏读和不可重复读的问题。
除了锁和事务,数据库管理系统还使用了其他的并发控制技术,例如并发控制图(Concurrency Control Graph)、多粒度锁(Multigranularity Locking)和死锁检测和处理。
并发控制
第11章 并发控制一、选择题:1、.设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是 。
A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读D .该操作读“脏”数据 答案:B2、设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是 。
A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读D .该操作读“脏”数据答案:C3、设有两个事务T1、T2,其并发操作如下所示,下列评价正确的是 。
A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读D .该操作读“脏”数据 答案:D4、解决并发操作带来的数据不一致性总是普遍采用 。
A .封锁B .恢复C .存取控制D .协商 答案:A5、若事务T 对数据R 已经加X 锁,则其他事务对数据R 。
A.可以加S锁不能加X锁B.不能加S锁可以加X锁 C.可以加S锁也可以加X锁D.不能加任何锁答案:D6、关于“死锁”,下列说法中正确的是。
A.死锁是操作系统中的问题,数据库操作中不存在 B.在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库C.当两个用户竞争相同资源时不会发生死锁 D.只有出现并发操作时,才有可能出现死锁答案:D7、对并发操作若不加以控制,可能会带来问题。
A.不安全B.死锁C.死机D.不一致答案:D8、并发操作会带来哪些数据不一致性。
A.丢失修改、不可重复读、脏读、死锁 B.不可重复读、脏读、死锁C.丢失修改、脏读、死锁 D.丢失修改、不可重复读、脏读答案:D二、填空题1、DBMS的基本工作单位是事务,它是用户定义的一组逻辑一致的程序序列;并发控制的主要方法是机制。
答案:封锁2、有两种基本类型的锁,它们是共享锁和排它锁。
答案:①共享锁②排它锁三、简答题1、叙述数据库中死锁产生的原因和解决死锁的方法。
答:死锁产生的原因:封锁可以引起死锁。
比如事务T1封锁了数据A,事务T2封锁了数据B。
T1又申请封锁数据B,但因B被T2封锁,所以T1只能等待。
(完整版)第11章并发控制(习题集)
第十一章并发控制(习题集)二、选择题1、为了防止一个用户的工作不适当地影响另一个用户,应该采取(D)。
A。
完整性控制 B。
访问控制C。
安全性控制 D. 并发控制2、解决并发操作带来的数据不一致问题普遍采用(A)技术。
A。
封锁 B。
存取控制C. 恢复D. 协商3、下列不属于并发操作带来的问题是(C)。
A。
丢失修改 B. 不可重复读C. 死锁D. 脏读4、DBMS普遍采用(C)方法来保证调度的正确性 .A。
索引 B. 授权C. 封锁D. 日志5、如果事务T获得了数据项Q上的排他锁,则T对Q( C)。
A。
只能读不能写 B. 只能写不能读C. 既可读又可写 D。
不能读也不能写6、设事务T1和T2,对数据库中地数据A进行操作,可能有如下几种情况,请问哪一种不会发生冲突操作(D)。
A. T1正在写A,T2要读AB. T1正在写A,T2也要写AC。
T1正在读A,T2要写AD. T1正在读A,T2也要读A7、如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是(D ) 。
A。
一个是DELETE,一个是SELECTB. 一个是SELECT,一个是DELETEC。
两个都是UPDATED. 两个都是SELECT8、在数据库系统中,死锁属于(B )。
A。
系统故障 B. 事务故障C. 介质故障 D。
程序故障9、数据库中的封锁机制是( C )的主要方法。
A、完整性B、安全性C、并发控制D、恢复三、填空题1、基本的封锁类型有两种:__排他锁__ 和_共享锁_ 。
2、并发操作可能会导致:丢失修改、不可重复读、读脏数据.四、简答题1、什么是封锁?2、基本的封锁类型有几种?试述它们的含义.3在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取或修改同一数据的情况.若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性.所以数据库管理系统必须提供并发控制机制。
数据库并发控制
数据库并发控制数据库并发控制是指在多个用户同时访问数据库时,保证数据一致性和并发执行效率的技术手段。
随着应用程序的复杂性和用户并发访问的增加,数据库并发控制显得尤为重要。
本文将探讨数据库并发控制的原理、常见的并发控制技术和实现方法。
一、并发控制原理在了解并发控制技术之前,我们先来了解一下并发控制的原理。
数据库并发控制的目标是要确保多个事务并发执行时,数据库的状态保持一致。
为了实现这个目标,数据库系统采用了以下基本原理:1. 事务隔离性:各个事务之间应该是互相隔离的,一个事务的执行不应该影响其他事务的执行。
2. 数据一致性:事务执行的结果必须是符合数据库的完整性约束和业务逻辑的。
3. 并发控制:对并发执行的事务进行调度和控制,防止数据的不一致和丢失。
二、并发控制技术1. 锁定机制锁定机制是最常见的并发控制技术之一。
通过给数据库的数据对象加锁,来控制事务对数据的访问。
常见的锁定技术有:共享锁、排他锁、意向锁等。
锁定机制能够有效地解决并发访问数据库时的数据一致性问题,但可能会导致死锁和性能下降的问题。
2. 多版本并发控制(MVCC)MVCC是一种乐观并发控制技术,通过为每个事务分配一个时间戳,并在数据库中保存数据的历史版本,从而实现事务的隔离性和并发执行效率。
MVCC不会对数据进行加锁,因此可以避免死锁问题,但可能会增加存储空间的消耗。
3. 时间戳序列化(TSO)时间戳序列化是一种并发控制技术,通过为每个事务分配一个时间戳,并将事务按照时间戳的大小进行排序,从而保证事务的执行顺序和数据的一致性。
TSO可以避免死锁问题,但可能会导致事务的回滚和重新执行。
三、并发控制实现方法在实际应用中,数据库并发控制可以通过以下几种方法来实现:1. 悲观并发控制(PCC)悲观并发控制是一种基于锁定机制的实现方法,它假设并发访问数据库的事务可能产生冲突,因此在事务执行之前,会对数据对象进行锁定,以避免数据的不一致和丢失。
数据库系统概论并发控制
T1
T2
T1
T2
① Xlock C
获得
读 C=100
C=2*C
写回 C=200
③rollback
②读 C=200
① Xlock C
获得
读C=100
C=2*C
写回 C=200
③ rollback
②Slock C 等待
7
第七页,编辑于星期一:二十点 三十六分。
1.一级封锁协议
一级封锁协议 :事务T在修改数据 R之前必须先对其加 X锁,
直到事务结束才释放 .
事务甲
事务乙
事务甲 事务乙
①读 A=16
②读A=16
③ A=16-1 ④写回 A=15
⑤ A=16-1
时
⑥写回A=15 间
①Xlock A 获得
读 A=16
③ A=16-1 ④写回 A=15
哪些是不正确的 .(设A、B的初值都为 2)
21
第二十一页,编辑于星期一:二十点 三十六分。
T1
Slock B
获得
读 B=2
Unlock B
Xlock A
获得
A=B+1=3 写回 A=3
Unlock A
T2
Slock A 获得 读A=2 Unlock A
Xlock B 获得
B=A+1=3
写回B=3
按某一次序串行地执行它们时的结果相同 ,我们称 这种调度策略为 可串行化 的调度 . 定理 : 一个给定的并发调度 ,当且仅当它是可串行化的 ,才 认为是 正确调度 .
例子 :有两个事务 : T1:读B; A=B+1; 写回A; T2:读A; B=A+1; 写回 B;
《数据库系统概论》复习重点习题11-并发控制
46.事务的所有操作在数据库中要么全部正确反映出来,要么全部不反映,这是事务的(B )。
2007.9 A.持久性 B. 原子性 C. 隔离性 D. 一致性事务的四个性质是:原子性、一致性、隔离性和持久性。
原子性:是保证数据库系统DBS完整性的基础。
一个事务中所有对数据库的操作是一个不可分割的操作序列。
一致性:一个事务独立执行的结果将保证数据库的一致性,即数据不会因事务的执行而遭受破坏。
隔离性:隔离性要求在并发事务被执行时,系统应保证与这些事务先后单独执行时结果一样,使事务如同在单用户环境下执行一样。
持久性:要求对数据库的全部操作完成后,事务对数据库的所有更新应永久地反映在数据库中。
46.确保事务的原子性是由数据库管理系统中的(B )负责的。
2008.4A.恢复管理 B. 并发控制 C. 完整性约束 D. 存储管理DBMS的存储管理子系统提供了数据库中数据和应用程序的一个界面,其职责是把各种DML语句转换成低层的文件系统命令,起到数据存储、检索和更新的作用。
48.对未提交更新的依赖(“脏”数据的读出)是事务的(C )遭到了破坏。
2008.4 A.原子性 B. 一致性 C. 隔离性 D. 持久性隔离性级别是指为保证数据库数据的完整性和一致性,而使多用户事务隔离的程度。
SQL92定义了4种隔离性级别:未提交读、提交读、可重复读和可串行。
如果选择过高的隔离性级别,如可串行,虽然系统可以因实现更好隔离性而更大程度上保证数据的完整性和一致性,但各事务间冲突而死锁的机会大大增加,大大影响了系统性能。
46.事务特性可表示为ACID特性,其中字母I表示的是事务的(B )。
2008.9A.原子性 B. 隔离性 C. 一致性 D. 持久性事务的4个特性是:原子性A、一致性C、隔离性I、持久性D。
47.在事务处理过程中,如果由于某些内部条件而使事务无法继续正常执行,则表示出现了(B )。
2008.9A.由逻辑错误引起的事务故障 B. 由系统错误引起的事务故障C.系统故障 D. 磁盘故障系统故障包括:特定类型的硬件错误、操作系统故障、DBMS代码错误等。
数据库并发控制
数据库是一个共享资源,可以提供多个用户使用。
这些用户程序可以一个一个地串行执行,每个时刻只有一个用户程序运行,执行对数据库的存取,其他用户程序必须等到这个用户程序结束以后方能对数据库存取。
但是如果一个用户程序涉及大量数据的输入/输出交换,则数据库系统的大部分时间处于闲置状态。
因此,为了充分利用数据库资源,发挥数据库共享资源的特点,应该允许多个用户并行地存取数据库。
但这样就会产生多个用户程序并发存取同一数据的情况,若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性,所以数据库管理系统必须提供并发控制机制。
并发控制机制的好坏是衡量一个数据库管理系统性能的重要标志之一。
DM用封锁机制来解决并发问题。
它可以保证任何时候都可以有多个正在运行的用户程序,但是所有用户程序都在彼此完全隔离的环境中运行。
一、并发控制的预备知识(一) 并发控制概述并发控制是以事务(transaction)为单位进行的。
1. 并发控制的单位――事务事务是数据库的逻辑工作单位,它是用户定义的一组操作序列。
一个事务可以是一组SQL 语句、一条SQL语句或整个程序。
事务的开始和结束都可以由用户显示的控制,如果用户没有显式地定义事务,则由数据库系统按缺省规定自动划分事务。
事务应该具有4种属性:原子性、一致性、隔离性和持久性。
(1)原子性事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说这些操作是一个整体,对数据库而言全做或者全不做,不能部分的完成。
这一性质即使在系统崩溃之后仍能得到保证,在系统崩溃之后将进行数据库恢复,用来恢复和撤销系统崩溃处于活动状态的事务对数据库的影响,从而保证事务的原子性。
系统对磁盘上的任何实际数据的修改之前都会将修改操作信息本身的信息记录到磁盘上。
当发生崩溃时,系统能根据这些操作记录当时该事务处于何种状态,以此确定是撤销该事务所做出的所有修改操作,还是将修改的操作重新执行。
(2)一致性一致性要求事务执行完成后,将数据库从一个一致状态转变到另一个一致状态。
数据库第11章并发控制PPT演示文稿
36
并发操作的调度(续)
– 对这两个事务的不同调度策略
• 串行执行 – 串行调度策略1 – 串行调度策略2
• 交错执行
– 不可串行化的调度 – 可串行化的调度
37
(a) 串行调度策略,正确的调度
T1
T2
读B=2 A B+1 写回A=3
读A=3 B A+1 写回B=4
– 时标方法 – 乐观方法
45
11 并发控制
11.1 并发控制概述 11.2 并发操作的调度 11.3 封锁 11.4 死锁和活锁 11.5 Oracle的并发控制
46
11.3 封锁
封锁就是事务T在对某个数据对象(例如表、 记录等)操作之前,先向系统发出请求,对其 加锁。加锁后事务T就对该数据对象有了一定 的控制,在事务T释放它的锁之前,其它的事 务不能更新此数据对象。
»在事务运行的过程中发生了某种故 障,事务不能继续执行
»系统将事务中对数据库的所有已完 成的更新操作全部撤消,滚回到事 务开始时的状态
13
事务(续)
事务的ACID特性:
原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持续性(Durability )
14
基本封锁类型
– 排它锁(eXclusive lock,简记为X锁) – 共享锁(Share lock,简记为S锁)
50
封锁类型(续)
排它锁 – 排它锁又称为写锁。 – 若事务T对数据对象A加上X锁,则只允许T
读取和修改A,其它任何事务都不能再对A 加任何类型的锁,直到T释放A上的锁。
51
封锁类型(续)
7
11.1 并发控制概述
王珊《数据库系统概论》章节题库(并发控制)【圣才出品】
第11章并发控制一、选择题1.实现数据库并发控制的主要方法是()。
A.授权B.索引C.日志D.封锁【答案】D【解析】数据库管理系统对事务的并发执行进行控制,以保证数据库一致性,最常用的方法是封锁的方法,即当一个事务访问某个数据项时,以一定的方式锁住该数据项,从而限制其他事务对该数据项的访问。
2.在并发控制技术中最常用的是封锁,对于共享锁(S)和排他锁(X)来说,下面列出的相容关系中,哪一个是正确的()。
A.X-X:相容B.S-S:相容C.S-X:相容D.X-S:相容【答案】B【解析】为了避免发生并发操作引起的数据不一致性问题,则采用数据封锁技术实现并发控制。
封锁是防止存取同一资源的用户之间相互干扰的机制,即当一个用户对数据库某个数据对象执行修改操作时,对该部分数据加锁,拒绝其他用户对该部分的并发访问要求,直至该事务执行完毕才释放数据对象;所以只有当两事务都是读取数据且都加S锁时才相容。
3.如果系统发生死锁,参与死锁的进程的个数至少是()个。
A.3B.1C.2D.4【答案】C【解析】由于各进程互相独立地活动,不断申请和释放软硬件资源,可能会出现这样一种状态:两个或两个以上的进程彼此等待对方拥有的而又不会释放的资源,则所有进程都不能进一步向前运行,这种状态就称为死锁。
因此,参与死锁的进程至少是两个。
4.对数据对象施加封锁可能会引起活锁和死锁问题,避免活锁的简单方法是采用()的策略。
A.顺序封锁法B.依次封锁法C.优先级高先服务D.先来先服务【答案】D【解析】活锁:某个事务永远得不到对某个数据资源的封锁,从而永远处于等待状态的现象;采用先来先服务的策略可以有效地避免活锁。
5.二级封锁协议可防止()。
A.不可重复读、丢失修改B.读“脏”数据C.读“脏”数据、丢失修改D.不可重复读、读“脏”数据【答案】C【解析】一级封锁协议可防止丢失修改;二级封锁协议可以防止丢失修改和读“脏”数据;三级封锁协议可防止丢失修改、读“脏”数据和不可重复读。
数据库系统原理教程课后习题及答案(第十章)
第11章并发控制1 .在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
2 .并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。
( l )丢失修改(lost update ) 两个事务 Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了) Tl 提交的结果,导致Tl 的修改被丢失。
( 2 )不可重复读( Non 一 Repeatable Read ) 不可重复读是指事务 Tl 读取数据后,事务几执行更新操作,使 Tl 无法再现前一次读取结果。
( 3 )读“脏”数据( Dirty Read ) 读“脏’夕数据是指事务 Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后, Tl 由于某种原因被撤销,这时 Tl 已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。
避免不一致性的方法和技术就是并发控制。
最常用的技术是封锁技术。
也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
3 .什么是封锁?基本的封锁类型有几种?试述它们的含义。
答:封锁就是事务 T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。
加锁后事务 T 就对该数据对象有了一定的控制,在事务 T 释放它的锁之前,其他的事务不能更新此数据对象。
封锁是实现并发控制的一个非常重要的技术。
基本的封锁类型有两种:排它锁( Exclusive Locks ,简称 x 锁)和共享锁 ( Share Locks,简称 S 锁)。
排它锁又称为写锁。
数据库系统概论之并发控制
数据库系统概论之并发控制并发控制是数据库系统中一个重要的概念,它指的是同时运行的多个事务之间对共享资源的访问和操作的控制。
在数据库系统中,多个用户可能同时对数据库进行读操作或者写操作,为了保证数据的一致性和完整性,必须要对并发操作进行控制。
并发控制的目标是确保多个事务的执行在数据库系统中能够正确、有序地进行,而不会出现冲突、混乱等问题。
在实现并发控制的过程中,需要解决的主要问题有以下几个方面:1.数据库锁定机制:锁是最常用的控制并发的工具之一、通过对数据进行加锁,可以控制事务对数据的访问,保证了数据的一致性。
常见的锁有共享锁和排他锁,共享锁允许多个事务读取同一份数据,而排他锁只允许一个事务对数据进行修改。
通过合理的使用锁,可以提高并发处理的效率和性能。
2.事务隔离级别:事务隔离级别定义了多个事务之间的隔离程度,即一个事务对数据库所做的修改对其他事务是否可见。
常见的事务隔离级别有READUNCOMMITTED、READCOMMITTED、REPEATABLEREAD和SERIALIZABLE。
不同的隔离级别对并发控制的实现方式和性能有不同的影响。
3.死锁处理:死锁指的是多个事务互相等待对方释放资源,导致无法继续进行下去的情况。
数据库系统需要检测和处理死锁,以保证系统的正常运行。
常见的死锁处理方法有超时、死锁检测和死锁恢复等。
除了以上三个方面,还有其他一些并发控制的技术和策略可以提高系统的并发处理能力,例如多版本并发控制(MVCC)、时间戳、快照隔离等。
这些技术和策略可以根据不同的应用场景和需求来选择和应用。
在实际应用中,合理设计和使用并发控制机制可以提高数据库系统的性能和并发处理能力。
但是,过度的并发控制也可能导致系统性能下降。
因此,在设计数据库系统时,需要综合考虑并发控制的复杂性、性能和系统需求,做出合理的选择和权衡。
总之,并发控制是数据库系统中一个重要的概念,通过对多个事务的并发执行进行控制,保证了数据的一致性和完整性。
第十一章并发控制
不可串行化的调度
T1
Slock B Y=B=2
T2
Slock A X=A=2
Unlock B Xlock A A=Y+1 写回A(=3)
Unlock A
Xlock B B=X+1 写回B(=3) Unlock B
Unlock A
不可串行化的调度
由于其执行结果与(a)、(b)的结果都不同,所
以是错误的调度。
T2
Slock A X=A=3 Unlock A Xlock B B=X+1 写回B(=4) Unlock B
串行调度策略,正确的调度
T1 T2
SlockA X=A=2 Unlock A Xlock B B=X+1 写回B(=3) Unlock B Slock B Y=B=3 Unlock B Xlock A A=Y+1 写回A(=4) Unlock A
不同级别的封锁协议: 1级封锁协议:对T要“修改”的R加X锁,直到T结 束
(从而避免丢失数据修改,保证事务可恢复) T对R的“读”操作,没作说明,所以可以不加 锁
1级封锁协议只解决“丢失修改”的问题,而另外 两种不能解决
T1 ① Xlock A 获得 ② 读A=16 ③A←A-1 写回A=15 Commit Unlock A ④
避免死锁问题:
两类方法
1. 预防死锁 2. 死锁的诊断与解除
预防死锁的方法:一次封锁法和顺序封锁法
一次封锁法:要求每个事务必须一次将所有要使用
的数据全部加锁,否则就不能继续执行
存在的问题:降低并发度
扩大封锁范围 将以后要用到的全部数据加锁,势必扩大了封锁的范 围,从而降低了系统的并发度
并发控制(完成)
并发控制 ----两段锁协议
两段锁协议—— 是指所有事务必须分两个阶段对数 据项加锁和解锁: 1. 在对任何数据进行读、写操作之前,首先要 申请并获得对该数据的封锁。 2. 在释放一个封锁之后,事务不再申请和获得 任何其他封锁。
并发控制 ----两段锁协议
“两段”锁的含义: 事务分为两个阶段。 第一阶段——获得封锁,也称为扩展阶段。在这一阶段, 事务可以申请获得任何数据项上的任何类型的锁,但 是不能释放任何锁。
并发控制 ----两段锁协议
遵守两段锁协议的事务发生死锁 T1 T2
Slock B 读B=2 Slock A 读A=2
Xlock A 等待 等待
Xlock B 等待
并发控制 ---封锁的粒度
• • • • 封锁的对象的大小称为封锁粒度(Granularity)。 封锁的对象可以是逻辑单元,也可以是物理单元。 以关系数据库为例,封锁对象可以是: 这样一些逻辑单元: 这样一些物理单元: 属性值、 页(数据页或索引页)、 属性值的集合、 块等 元组、 关系、 索引项、 整个索引 整个数据库;
并发控制 ---封锁的粒度
• 封锁粒度与系统的并发度和并发控制的开销密切相关。 • 直观地看,封锁的粒度越大,数据库所能够封锁的数 据单元就越少,并发度就越小,系统开销也越小;反 之,封锁的粒度越小,并发度较高,但系统开销也就 越大。 • 如果在一个系统中同时支持多种封锁粒度供不同的事 务选择是比较理想的,这种封锁方法称为多粒度封锁 (multiple granularity locking)。
第二阶段——释放封锁,也称为收缩阶段。在这阶段, 事务可以释放任何数据项上的任何类型的琐,但是不 能再申请任何琐。
并发控制 ----两段锁协议
实验11:数据库的并发控制
实验11:数据库并发控制一.实验目的1. 理解数据库的一致性和并发性概念。
2. 掌握SQL Server的封锁机制。
二.实验内容1. 通过调用sp_lock存储过程,查看SQL Server自动加锁信息;2. 掌握SQL Server 中自定义封锁的基本原理;3. 利用封锁和事务隔离解决并发操作所带来的问题。
三.实验步骤1. 理解实践SQL Server的自动封锁技术(1)启动SSMS服务,新建一个查询窗口,执行如下更新语句:Use JXGLBEGIN TRANSACTIONUPDATE studentSET sdept='计算机科学与技术系'WHERE sdept='计算机系';注意查看运行结果,记录该语句更新了多少行数据........?(2)输入“exec sp_lock”语句,调用系统存储过程sp_lock,该存储过程可以显示当前数据库的封锁信息。
结果如下:理解:对上述结果进行分析,执行数据更新操作时,DBMS会自动在何种粒度的数据对象上添加什么类型的封锁?请将分析结果誊写在实验报告上。
(3)在(1)中的数据更新语句最后添加“RollBack Tran”语句,执行语句,撤销事务。
然后再次调用sp_lock存储过程,查看当前的封锁信息,分析原因,并将分析结果誊写在实验报告上。
2.实践SQL Ser ver的用户自定义封锁并发操作带来的数据不一致性有三种情况:丢失修改、不可重复读和读“脏”数据。
利用SQL Server提供的用户自定义封锁可以解决这些问题。
相关原理(详情可查阅联机丛书中的“访问和更改关系数据->锁定”一节的内容):可以给select等语句指定holdlock(共享锁),tablockx(表级排它锁)、uplock(更新锁)等自定义锁,用以控制对数据的并发访问。
自定义封锁实验内容:新建两个查询窗口水平排列,模拟为两个连接到SQL Server服务器的客户端。
数据库系统第11章并发控制
并发控制(续)
❖ 多事务执行方式
(1)事务串行执行
T1
每个时刻只有一个事务运行,其他事务
必须等到这个事务结束以后方能运行
T2
T3
不能充分利用系统资源,发挥数据库共
享资源的特点
An Introduction to Database System
T1 ① 读A=16 ②
③ A←A-1 写回A=15
④
T2 读A=16
A←A-3 写回A=13
T1的修改被T2覆盖了!
An Introduction to Database System
第十一章 并发控制
11.1 并发控制概述 11.2 封锁 11.3 封锁协议 11.4 活锁和死锁 11.5 并发调度的可串行性 11.6 两段锁协议 11.7 封锁的粒度 *11.8 其他并发控制机制 11.9 小结
❖ 一级封锁协议可防止丢失修改,并保证事务T是 可恢复的。
An Introduction to Database System
使用封锁机制解决丢失修改问题
例:
T1
① R(A)=16
②
③ A←A-1
W(A)=15
④
T2 R(A)=16
A←A-3 W(A)=13
T1
T2
① Xlock A
② R(A)=16
❖ 记号
R(x): 读数据x W(x): 写数据x
An Introduction to Database System
1. 丢失修改
❖ 两个事务 T1和 T2读入同一数据并修改 ,T2的 提 交 结果破坏了T1提交的结果,导致T1的修改被丢失。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019/7/2
数据库系统原理
4
事务并发执行带来的问题
可能会读取和存储不正确的数据,破坏事务的隔离性 和数据库的一致性
DBMS必须提供并发控制机制 并发控制机制是衡量一个DBMS性能的重要标志之一
2019/7/2
数据库系统原理
2019/7/2
数据库系统原理
7
并发控制概述
数据不一致实例:飞机订票系统
事务 T1 ① 读A=16
事务 T2
②
读A=16
③ A←A-1 写回A=15
④
A←A-1
写回A=15
T1的修改被T2覆盖了!
2019/7/2
数据库系统原理
8
并发控制概述
并发操作带来的数据不一致性 1、丢失修改(lost update) 2、不可重复读(non-repeatable read) 3、读“脏”数据(dirty read)
数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影现象(phantom row)
2019/7/2
数据库系统原理
13
§11.2 封锁
一、什么是封锁 二、基本封锁类型 三、基本锁的相容矩阵
2019/7/2
数据库系统原理
14
一、什么是封锁
封锁就是事务T在对某个数据对象(例如表、记录等) 操作之前,先向系统发出请求,对其加锁
③ A←A-1
3、读“脏”数据(dirty写re回aAd=)15
④
A←A-1
写回A=15
2019/7/2
数据库系统原理
10
并发控制概述
并发操作带来的数据不一致性
1、丢失修改(lost update) 2、不可重复读(non-①rep读事eAa务=t5aT0b1 le re事a务d)T2
读B=100
基本封锁类型 排它锁(Exclusive lock,简记为X锁) 共享锁(Share lock,简记为S锁)
2019/7/2
数据库系统原理
16
二、基本封锁类型
DBMS通常提供了多种类型的封锁。一个事务对某个 数据对象加锁后究竟拥有什么样的控制是由封锁的 类型决定的
基本封锁类型 排它锁(Exclusive lock,简记为X锁)
2
多事务的执行
串行执行 交叉并发执行
一些并行事务的并行操作轮流交叉运行 单处理机系统中的并发方式,能够减少处理机的
空闲时间,提高系统的效率 同时并发执行
2019/7/2
数据库系统原理
3
多事务的执行
串行执行 交叉并发执行 同时并发执行
多处理机系统,每个处理机可以运行一个事务, 多个处理机可以同时运行多个事务,实现多个 事务真正的并行运行
3、读“脏”数据(dirty r事e务adT)1
事务 T2
① 读C=100
指事务1修改某一数据,C←并C将*2其写回磁盘,事务2
读取同一数据后,事务1由写于回某C 种原因被撤消,这时
事务1已修改过的数据恢② 复原值,事务读2读C=到20的0数据
就与数据库中的数据不③一致RO,LL是BA不C正K 确的数据,又
加锁后事务T就对该数据对象有了一定的控制,在事务 T释放它的锁之前,其它的事务不能更新此数据对象
封锁是实现并发控制的一个非常重要的技术
2019/7/2
数据库系统原理
15
二、基本封锁类型
DBMS通常提供了多种类型的封锁。一个事务对某个 数据对象加锁后究竟拥有什么样的控制是由封锁的 类型决定的
排它锁又称为写锁 若事务T对数据对象A加上X锁,则只允许T读取 和修改A,其它任何事务不能再对A加任何类型 的锁,直到T释放A上的锁 共享锁(Share lock,简记为S锁)
2019/7/2
数据库系统原理
17
二、基本封锁类型
DBMS通常提供了多种类型的封锁。一个事务对某个 数据对象加锁后究竟拥有什么样的控制是由封锁的 类型决定的
多事务的执行
串行执行 交叉并发执行 同时并发执行
2019/7/2
数据库系统原理
1
多事务的执行
串行执行
每个时刻只有一个事务运行,其他事务必须等到 这个事务结束以后方能运行
不能充分利用系统资源,发挥数据库共享资源的 特点
交叉并发执行 同时并发执行
2019/7/2
数据库系统原理
5
第十一章 并发控制
§11.1 并发控制概述 §11.2 封锁 §11.3 活锁和死锁 §11.4 数据并发调度的可串行性 §11.5 两段锁协议 §11.6 封锁粒度 §11.7 小结
2019/7/2
数据库系统原理
6
§11.1 并发控制概述
并发控制机制的任Байду номын сангаас 对并发操作进行正确调度 保证事务的隔离性 保证数据库的一致性
称为“脏”数据。
C恢复为100
2019/7/2
数据库系统原理
12
三类不可重复读
事务1读取某一数据后: 1)事务2对其做了修改,当事务1再次读该数据时,得到
与前一次不同的值。 2)事务2删除了其中部分记录,当事务1再次读取数据时,
发现某些记录神密地消失了。 3)事务2插入了一些记录,当事务1再次按相同条件读取
基本封锁类型 排它锁(Exclusive lock,简记为X锁) 共享锁(Share lock,简记为S锁)
共享锁又称为读锁 若事务T对数据对象A加S锁,则事务T可以读取A 但不能修改A,其它事务只能再对A加S锁,而不 能加X锁,直到T释放A上的S锁
2019/7/2
指事务1读取数据后,事求务和=2执15行0 更新操作,使
事务1无法再现前一次读②取结果。 3、读“脏”数据(dirty read)
读B=100
B←B*2 写回B=200
③ 读A=50 读B=200 求和=250 (验算不对)
2019/7/2
数据库系统原理
11
并发控制概述
并发操作带来的数据不一致性 1、丢失修改(lost update) 2、不可重复读(non-repeatable read)
2019/7/2
数据库系统原理
9
并发控制概述
并发操作带来的数据不一致性 1、丢失修改(lost update)
事务指2事的务提1交与结事果务破2坏从了数①事据读事务库A务=1中1提T读61交入的同结事一务果数,T据2 导并致修事改务,
1的修改被丢失。
②
读A=16
2、不可重复读(non-repeatable read)