SQL数据库语言中的并发控制
《电子商务数据库技术》自考综合练习题

《电子商务数据库技术》自考综合练习题------------------------------------------作者xxxx------------------------------------------日期xxxx《电子商务数据库技术》自考综合练习题自考真题 2010-03-22 14:23:50 阅读404 评论0 字号:大中小订阅综合题是各真题的综合。
建议将出题点在课本上划下,将其背住。
《电子商务数据库技术》综合练习题一、填空题大的问题。
10.模式/内模式映象为数据库提供了____物理____数据独立性。
11.能够消除部分函数依赖引起的冗余的范式是第二范式; 能够消除传递函数依赖引起的冗余的范式是第三范式。
12.第一代DBMS系统主要是指(层次和网状)。
13.最常用的概念模型是(E—R图)。
14.SQL查询语句__select_from_。
二、选择题1.数据库的基本特点之一是(C)。
A、数据冗余大,容易扩充B、数据冗余大,不容易扩充C、数据冗余小,容易扩充D、数据冗余小,不容易扩充2.数据库管理系统(DBMS)是(C)。
A、一个完整的数据库应用系统B、一组硬件C、一组软件D、既有软件,也有硬件3.通过指针链接来表示和实现实体之间联系的模型是(C)。
A、关系模型B、层次模型C、网状模型D、前面三个都不对4.同一个关系模型的任意两个元组值(A)。
A、不能完全相同B、必须全部相同C、必须部分相同D、不能部分相同5.SQL言语是(C)。
A、层次数据库言语B、网状数据库言语C、关系数据库言语D、前面三个都不对6.根据规范化理论,关系数据库中的关系必须满足:每一个属性都是(A)。
A、不可分解的B、互不相关的C、互相关联的D、可以改变长度的7.关系模型的分解(C)。
A、唯一B、不唯一C、有时不唯一D、以上都不对8.数据的正确性和相容性是数据库的(C)。
A、可移植性B、安全性C、完整性D、并发控制9.对并发操作若不加以控制,可能会引起(D)。
数据库的并发控制和封锁协议分析

数据库的并发控制和封锁协议分析作者:李丰来源:《商场现代化》2008年第02期[摘要] 数据库可以提供给多个用户共享数据信息资源,所以就必须对并发的事务进行控制,这种并发控制必须引入一些封锁协议以保证数据的完整性。
本文针对数据库并发操作中可能产生的数据不一致性问题进行分析,并给出解决的方法。
[关键词] 数据库并发控制一致性封锁封锁协议一、引言目前主流的关系数据库通常都允许多个用户同时使用和共享,所以也都具有并发控制的机制,也就是控制数据库,防止多用户并发使用数据库时造成数据错误和程序运行错误,以保证数据的完整性。
二、事务与并发控制的概念当多用户并发存取数据时,就会产生多个事务同时存取同一数据的情况,从而引起严重的数据错误和程序运行错误。
那么我们来看,什么是事务及并发控制呢?事务就是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的很小的工作单位。
例如,在SQL语言中,定义事务的语句有三条:BEGIN TRANSACTION;COMMIT;ROLLBACK;其中的BEGIN TRANSACTION是事务开始的标记,而以COMMIT或者ROLLBACK结束,COMMIT用于提交事务的所有操作,ROLLBACK则在事务运行过程中一旦发生了某种故障而使事务无法继续执行的时候,系统就将事务中对数据库的所有刚刚完成的操作全部撤消,滚动回到事务开始时的状态。
为了充分利用系统资源,使数据库的共享资源得以有效利用,必须可以使多个事务并行的执行,而数据库对并行执行的事务进行的控制就是并发控制。
三、事务进行并发操作可能引起的数据不一致问题由于种种原因,都可能引起数据库的数据遭到破坏,比如多个事务在并行运行的时候,不同的事务的操作产生了交叉执行,或者,事务在运行过程中被强行停止或者中断。
因此,事务在进行并发操作的时候很可能引起数据的不一致,下面我们看一个具体的例子。
例如飞机票的联网销售系统,如果有以下的操作序列:1.甲售票处(设置为T1事务)读出某班次的机票剩余数A,设A=202.乙售票处(设置为T2事务)读出同班次的机票剩余数A,也是203.甲售票处(T1事务)卖出一张机票,修改剩余数减一(A←A-1),把A=19写回数据库中4.乙售票处(T2事务)也卖出一张机票,修改剩余数减一(A←A-1),把A=19写回数据库中从这些操作中,我们看到,乙售票处的修改数据覆盖了甲售票处修改的数据,实际发生了两张机票的销售,而数据库中却错误的存入19,少了一张。
数据库技术复习题_二_填空题附答案

数据库技术试题 二、填空题1. 1. 一个类可以从直接的或间接的祖先中继承所有属性和方法。
采用一个类可以从直接的或间接的祖先中继承所有属性和方法。
采用这个方法提高了软件的这个方法提高了软件的 共享性。
共享性。
共享性。
2. 2. 用树型结构表示实体类型及实体间联系的数据模型称为用树型结构表示实体类型及实体间联系的数据模型称为用树型结构表示实体类型及实体间联系的数据模型称为 层次模层次模型 。
3. 3. 关系数据库的关系演算语言是以关系数据库的关系演算语言是以关系数据库的关系演算语言是以 集合操作集合操作集合操作 为基础的为基础的DML 语言。
语言。
4. 4. 在函数信赖中,平凡的函数信赖根据在函数信赖中,平凡的函数信赖根据Armstrong 推理规则中的推理规则中的自反自反自反 律就可推出。
律就可推出。
律就可推出。
5. 5. 分布式数据库中定义数据分片时,必须满足三个条件:完备性条分布式数据库中定义数据分片时,必须满足三个条件:完备性条件、重构条件和件、重构条件和 不相交条件。
不相交条件。
不相交条件。
6. DB 并发操作通常会带来三类问题,它们是丢失更新、不一致分析和读脏数据。
和读脏数据。
7. 7. 事务必须具有的四个性质是:原子性、一致性、事务必须具有的四个性质是:原子性、一致性、事务必须具有的四个性质是:原子性、一致性、 隔离性隔离性隔离性 和持久性。
和持久性。
8. 8. 分布式数据库系统中透明性层次越高,应用程序的编写越分布式数据库系统中透明性层次越高,应用程序的编写越分布式数据库系统中透明性层次越高,应用程序的编写越 简简单 。
9. 9. 在有泛化在有泛化在有泛化//细化联系的对象类型之间,较低层的对象类型称为较低层的对象类型称为 子子类型类型 。
10. 10. 目前数据库领域中最常用的数据模型有目前数据库领域中最常用的数据模型有目前数据库领域中最常用的数据模型有 层次模型层次模型层次模型, , , 、、 网状模型网状模型, , , 、、 关系模型关系模型关系模型 、、面向对象模型面向对象模型 。
1.SQL语言是()的语言,容易学习。

1.SQL语言是()的语言,容易学习。
A. 过程化B.非过程化C.格式化D.导航式2.在视图上不能完成的操作是()。
A.更新视图B.查询C.在视图上定义新的表D.在视图上定义新的视图3.SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能()。
A.数据查询B.数据操纵C.数据定义D.数据控制4. SQL语言中,删除一个视图的命令是()。
A.DELETEB.DROPC.CLEARD.REMOVE5.在SQL语言中的视图VIEW是数据库的()。
A.外模式B.模式C.内模式D.存储模式6.下列的SQL语句中,()不是数据定义语句。
A.CREATE TABLEB.DROP VIEWC.CREATE VIEWD.GRANT7.若要撤销数据库中已经存在的表S,可用()。
A.DELETE TABLE SB.DELETE SC.DROP TABLE SD.DROP S8.若要在基本表S中增加一列CN(课程名),可用()。
A. ADD TABLE S(CN CHAR(8))B. ADD TABLE S ALTER(CN CHAR(8))C. ALTER TABLE S ADD(CN CHAR(8))D. ALTER TABLE S (ADD CN CHAR(8))9.学生关系模式 S( S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。
要在表S中删除一个属性“年龄”,可选用的SQL语句是()。
A.DELETE Age from SB.ALTER TABLE S DROP AgeC.UPDATE S AgeD.ALTER TABLE S ‘Age’10.有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。
其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄, C#是课程号,CNAME是课程名称。
数据库工程师面试题及答案(全)

数据库工程师面试题及答案1.请简要介绍你对数据库的理解以及你的数据库工作经验?答:数据库是一种可以存储、管理和检索数据的软件系统。
作为一名数据库工程师,我的主要工作职责包括设计和管理数据库系统、调优和优化数据库性能、实现数据备份和恢复、确保数据安全和隐私保护等。
我拥有多年的数据库工作经验,擅长使用MySQL、Oracle、SQL Server等数据库管理系统,对SQL语言和数据库优化有深入的了解。
2.请介绍一下数据库索引的原理和常用类型?答:数据库索引是一种数据结构,可以加速数据检索的速度和效率。
常见的索引类型包括B+树索引、哈希索引、全文索引等。
其中,B+树索引是最常用的索引类型,它采用平衡树结构来存储数据,可以支持快速的范围查找和排序操作。
哈希索引是一种使用哈希函数将数据映射到索引中的索引类型,可以支持快速的精确查找操作。
全文索引是一种可以在文本中进行模糊匹配的索引类型,可以支持全文搜索和关键词查询。
3.请介绍一下数据库事务的概念和ACID特性?答:数据库事务是一组需要被看作为一个单独的操作执行的SQL语句集合。
为了确保数据的完整性和一致性,事务需要满足ACID特性。
ACID是指原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
⏹原子性:事务中的所有操作要么全部执行成功,要么全部失败,不存在中间状态。
⏹一致性:事务执行前后,数据库中的数据保持一致性状态。
⏹隔离性:事务之间的操作互相隔离,一个事务的执行不应该影响其他事务。
⏹持久性:事务执行成功后,其所做的修改应该被持久化存储,不会因为系统故障等原因丢失。
4.请简述一下数据库优化的方法和技巧?答:数据库优化是提高数据库性能和响应速度的重要手段,常用的方法和技巧包括:⏹合理设计和优化数据库结构,避免冗余和无用数据。
⏹创建适当的索引,加快数据检索速度。
⏹使用分区表,优化大数据表的查询速度。
数据库系统概论第五版资料

1. 并发控制的主要方法是封锁机制。
2. 标准SQL授权语句中允许权限传播的短语为grant。
3. 函数依赖可能造成的数据异常有数据冗余、删除异常、插入异常、和修改异常四种4. 关系数据库的完整性约束包括域完整性、实体完整性和参照完整性、用户自定义的完整性。
5.分E-R图之间的冲突主要有属性冲突、命名冲突、结构冲突三种6.数据库系统的逻辑模型按照计算机的观点对数据建模,主要包括层次模型、网状模型和关系模型、面向对象模型、对象关系模型等7. 一个关系的候选码中的属性被称为主属性、其它属性被称为非主属性8. 最经常使用的概念模型是E-R9. 在关系模型中,关系操作包括查询、插入、删除和修改等10. 嵌入式SQL语句中为了和主语言语句进行区分,在SQL语句前加前缀EXEC SQL,以分号结束。
11.数据库角色实际上是一组与数据库操作相关的各种权限。
12.DBMS的全称是数据库管理系统。
13. 数据库系统的三级模式结构是指数据库系统是由外模式、内模式和模式三级构成。
14. 传统的集合操作包括并、交、差、和笛卡尔积。
15. SQL语言具有两种使用方式,分别称为交互式SQL和嵌入式SQL。
16. 在SQL语言中,为了数据库的安全性,设置了对数据的存取进行控制的语句,对用户授权使用grant语句,收回所授的权限使用revoke语句。
17. 数据库设计的几个步骤是需求分析、概念结构设计、逻辑结构设计、物理设计、系统实施、系统运行和维护。
18.关系模型是目前最常用也是最重要的一种数据模型。
采用该模型作为数据的组织方式的数据库系统称为关系数据库系统。
19. SQL语言集数据操纵、数据定义和数据控制功能于一体,充分体现了关系数据语言的特点和优点。
20.三级模式之间的两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
21.事务必须具备4个特性:原子性、一致性、隔离性和持久性。
22. 数据完整性可分为:实体完整性、参照完整性和用户自定义完整性。
sql server悲观并发控制的语句

SQL Server悲观并发控制是数据库管理中非常重要的一部分,它可以帮助我们有效地管理并发访问数据库的情况,确保数据的完整性和一致性。
在实际应用中,我们需要了解SQL Server中使用悲观并发控制的语句和技巧,以确保数据库操作的稳定和安全。
一、悲观并发控制的概念和原理悲观并发控制是一种保守的并发控制方法,其核心思想是假设并发访问会导致数据的冲突和错误,因此在数据访问时采取预防措施。
在SQL Server中,通过使用锁定和事务的方式来实现悲观并发控制,保证每次数据访问都是独占的,避免数据的错误修改和丢失。
二、使用悲观并发控制的常见场景1. 数据库中的关键业务操作,如订单的生成和支付,需要保证数据的一致性和准确性,因此需要采用悲观并发控制来避免并发访问导致的错误操作。
2. 对于频繁更新的数据表,如库存表和销售表,需要采用悲观并发控制来避免多次修改导致数据不一致的情况。
三、SQL Server中的悲观并发控制语句在SQL Server中,可以通过以下语句实现悲观并发控制:1. 使用锁定语句来限制对数据的访问,如在查询语句中使用排他锁(XLOCK)或共享锁(SHAREDLOCK),确保其他访问者无法同时修改数据。
2. 使用事务来保证数据操作的一致性,通过Begin Transaction和Commit Transaction来确保操作的原子性和隔离性。
3. 使用索引来提高悲观并发控制的效率,如在频繁更新的字段上创建合适的索引,以加快数据访问的速度。
四、悲观并发控制的注意事项和技巧1. 在使用悲观并发控制时,需要考虑到对数据库性能的影响,尽量减少锁定的时间和范围,避免造成死锁和性能下降。
2. 针对不同的业务场景和数据表,需要选择合适的锁定级别和事务隔离级别,以平衡数据的一致性和系统的并发性能。
3. 在设计数据库表结构和索引时,需要考虑到悲观并发控制的需求,合理设置字段和索引,以提高悲观并发控制的效率和稳定性。
数据库学习课程第二章习题和答案

数据库学习课程第二章习题和答案一.单项选择1.SQL语言是 B 的语言,易学习.A 过程化B 非过程化C 格式化D 导航式提示:SQL是一种介于关系代数与关系演算之间的结构化查询语言,它是高度非过程化的.2.SQL语言是 C 语言.A 层次数据库B 网络数据库C 关系数据库D 非数据库提示:SQL是关系数据库标准语言.3.SQL语言具有 B 的功能.A 关系规范化,数据操纵,数据控制B 数据定义,数据操纵,数据控制C 数据定义,关系规范化,数据控制D 数据定义,关系规范化,数据操纵提示:SQL语言自身不具备关系规范化功能.4.在SQL中,用户可以直接操作的是 D .A 基本表B 视图C 基本表和视图D 基本表和视图5.在SQL语言中,实现数据检索的语句是 A .A SELECTB INSERTC UPDATED DELETE6.SELECT语句执行结果是 C .A 数据项B 元组C 表D 数据库7.在SQL语句中,对输出结果排序的语句是 B .A GROUP BYB ORDER BYC WHERED HA VING8.在SELECT语句中,需对分组情况满足的条件进行判断时,应使用 D .A WHEREB GROUP BYC ORDER BYD HA VING9.在SELECT语句中使用*表示 B .A 选择任何属性B 选择全部属性C 选择全部元组D 选择主码10.在SELECT语句中,使用MAX(列名)时,该”列名”应该 D .A 必须是数值型B 必须是字符型C 必须是数值型或字符型D 不限制数据类型11.使用CREATE TABLE语句创建的是 B .A 数据库B 表C 试图D 索引12.下列SQL语句中,修改表结构的是 A .A ALTERB CREATEC UPDATED INSERT13.在SQL中使用UPDATE语句对表中数据进行修改时,应使用的语句是 D .A WHEREB FROMC V ALUESD SET14.视图建立后,在数据库中存放的是 C .A 查询语句B 组成视图的表的内容C 视图的定义D 产生视图的表的定义15.以下叙述中正确的是 B .A SELECT命令是通过FOR子句指定查询条件B SELECT命令是通过WHERE子句指定查询条件C SELECT命令是通过WHILE子句指定查询条件D SELECT命令是通过IS子句指定查询条件16.与WHERE AGE BETWEEN 18 AND 23完全等价的是 D .A WHERE AGE>18 AND AGE<23B WHERE AGE<18 AND AGE>23C WHERE AGE>18 AND AGE<=23 D WHERE AGE>=18 AND AGE<=2317.在查询中统计记录(元组)的个数时,应使用 C 函数.A SUMB COUNT(列名)C COUNT(*)D A VG18.在查询中统计某列中值的个数应使用 B 函数.A SUMB COUNT(列名)C COUNT(*)D A VG19.已知基本表SC(S#,C#,GRADE),其中S#为学号,C#为课程号,GRADE为成绩.则”统计选修了课程的学生人数”的SQL—SELECT语句为 A .A SELECT COUNT(DISTINCT S#)FROM SCB SELECT COUNT(S#)FROM SC C SELECT COUNT()FROM SCD SELECT COUNT(DISTINCT *)FROM SC20.在数据库中有如图所示的两个表,若职工表的主码是职工号,部门表的主码是部门号,SQL 操作 B 不能执行.A 从职工表中删除行(‘025’,’王芳’,’03’,720)B 将行(‘005’,’乔兴’,’04’,750)插入到职工表中C 将职工号为”001”的工资改为700D 将职工号为”038”的部门号改为’03’提示:由于职工表中的职工号为主码,不能向其中插入同主码的记录.21.若用如下SQL语句创建一个表studentCREATE TABLE student(NO CHAR(4) NOT NULL,NAME CHAR(8) NOT NULL,SEX CHAR(2),AGE INT)可以插入到student 表中的是 B .A (‘1031’,’曾华’,男,23)B (‘1031’,’曾华’,NULL,NULL)C (NULL,’曾华’,’男’,’23’)D (‘1031’,NULL,’男’,23)提示:A 中性别SEX 属性值格式不正确,C 中NO 属性值不能为空,D 中NAME 属性值不能为空.22.假设学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE).要查询选修”COMPUTER ”课程的”女”同学的姓名,将涉及关系 D .A SB SC,C C S,SCD S,SC,C 二.填空1.SQL 语言的数据定义功能包括 定义数据 、 定义基本表 、 定义视图 、 定义索引 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Slock A 等待 等待 等待 X=A=3 Unlock A Xlock B B=X+1 写回B(=4) Unlock B
(d) 可串行化的调度(续)
由于其执行结果与串行调度(a)的执行 结果相同,所以是正确的调度。
2、如何保证并发操作的调度是正确的
为了保证并行操作的正确性,DBMS的并行控制机 制必须提供一定的手段来保证调度是可串行化的。 从理论上讲,在某一事务执行时禁止其他事务执行 的调度策略一定是可串行化的调度,这也是最简单 的调度策略,但这种方法实际上是不可行的,因为 它使用户不能充分共享数据库资源。
新此数据对象。
封锁是实现并发控制的一个非常重要的技术
1、基本封锁类型
DBMS通常提供了多种类型的封锁。一个事务 对某个数据对象加锁后究竟拥有什么样的控制 是由封锁的类型决定的。
基本封锁类型
排它锁(eXclusive lock,简记为X锁)
共享锁(Share lock,简记为S锁)
排它锁
逻辑单元: 属性值、属性值集合、元组、关系、索 引项、整个索引、整个数据库等
物理单元:页(数据页或索引页)、物理记录等
什么是封锁粒度(续)
封锁对象可以很大也可以很小 例: 对整个数据库加锁 对某个属性值加锁
封锁对象的大小称为封锁的粒度(Granularity)
多粒度封锁(multiple granularity locking) 在一个系统中同时支持多种封锁粒度供不同 的事务选择
事务T在修改数据R之前必须先对其加X 锁,直到事务结束才释放
正常结束(COMMIT) 非正常结束(ROLLBACK)
1级封锁协议可防止丢失修改 在1级封锁协议中,如果是读数据,不需要加 锁的,所以它不能保证可重复读和不读“脏” 数据。
1级封锁协议P167
T1
① Xlock A 读A=16
Y
X
S -
N Y
Y Y
Y Y
Y=Yes,相容的请求 N=No,不相容的请求
封锁的粒度
8.7.1 封锁粒度
8.7.2 多粒度封锁 8.7.3 意向锁
2、 封锁粒度
(1)什么是封锁粒度
(2)选择封锁粒度的原则
(1)什么是封锁粒度
X锁和S锁都是加在某一个数据对象上的
封锁的对象:逻辑单元,物理单元 例:在关系数据库中,封锁对象:
排它锁又称为写锁 若事务T对数据对象A加上X锁,则只允 许T读取和修改A,其它任何事务都不能 再对A加任何类型的锁,直到T释放A上 的锁
共享锁
共享锁又称为读锁
若事务T对数据对象A加上S锁,则其它 事务只能再对A加S锁,而不能加X锁, 直到T释放A上的S锁
锁的相容矩阵
T2 T1
X
N
S N
允许多粒度树中的每个结点被独立地加锁
对一个结点加锁意味着这个结点的所有后 裔结点也被加以同样类型的锁 在多粒度封锁中一个数据对象可能以两种 方式封锁:显式封锁和隐式封锁
3、 封锁协议
在运用X锁和S锁对数据对象加锁时,需要约
定一些规则:封锁协议(Locking Protocol)
何时申请X锁或S锁 持锁时间、何时释放
读“脏”数据
读A=15
1级封锁协议
T1
①读A=50 读B=100 求和=150 ② Xlock B 获得 读B=100 B←B*2 写回 B=200 Commit Unlock B
T2
不可重复读
③读A=50 读B=200 求和=250 (验算不对)
如何保证并发操作的调度是正确的(续)
保证并发操作调度正确性的方法:
封锁方法
时标方法
乐观方法
三、 封锁
• 1 基本封锁类型
• 2 封锁粒度 • 3 封锁协议 •4 死锁与活锁
什么是封锁
封锁就是事务T在对某个数据对象(例如表、
记录等)操作之前,先向系统发出请求,对其 加锁 加锁后事务T就对该数据对象有了一定的控制, 在事务T释放它的锁之前,其它的事务不能更
DBMS必须提供并发控制机制 并发控制机制是衡量一个 DBMS 性能的 重要标志之一
一、
并发控制概述
并发控制机制的任务
对并发操作进行正确调度
保证事务的隔离性
保证数据库的一致性
1、并发控制单位—事务
事务是数据库的逻辑工作单位,它是用户定义的一组操 作序列。 在SQL中,定义事务的语句有三条: BEGIN TRANSACTION COMMIT /*提交事务的所有操作,即将事务中所有 对数据库的更新写回到磁盘上的物理数据库中去,事务 正常结束。 ROLLBACK /*表示回滚,即在事务运行中发生了某 种故障,事务不能继续执行,系统将事务中对数据库的 所有已完成的更新操作全部撤销,滚回到事务开始时的 状态。
事务 T1 ① 读A=16 ② ③ A←A-1 写回A=15 ④ A←A-3 写回A=13 事务 T2
读A=16
T1的修改被T2覆盖了!
并发操作带来的数据不一致性
丢失修改(lost update)
不可重复读(non-repeatable read) 读“脏”数据(dirty read)
(1) 丢失修改
每个时刻只有一个事务运行,其他事务 必须等到这个事务结束以后方能运行 不能充分利用系统资源,发挥数据库共 享资源的特点
并发控制(续)
事务的并行执行是这些并行事务的并行操作 轮流交叉运行 是单处理机系统中的并发方式,能够减少处 理机的空闲时间,提高系统的效率
(2) 交叉并发方式( interleaved concurrency )
事务2读到的数据就与数据库中的数据不一致,
是不正确的数据,又称为“脏”数据。
图3 三种数据不一致性(续)
T1 T2
① 读C=100 C←C*2 写回C ②
读C=200
③ ROLLBACK C恢复为100
(c) 读“脏”数据
二、 并发调度的可串行性
1、什么样的并发操作调度是正确的
2、如何保证并发操作的调度是正确的
(3) 多粒度封锁
多粒度树
以树形结构来表示多级封锁粒度
根结点是整个数据库,表示最大的数据粒度 叶结点表示最小的数据粒度
多粒度封锁(续)
例:三级粒度树。根结点为数据库,数据库的子 结点为关系,关系的子结点为元组。
数据库
关系R1
……
关系Rn 元组
…… 元组 元组
元组 ……
多粒度封锁协议
事务的属性P162
(1)原子性---一个事务是一个不可分 割的工作单位,事务中包括的操作要么 都做,要么都不做。 (2)一致性: (3)隔离性 (4)持续性
2、并发操作的三类不一致性
并发操作带来的数据不一致性包括三类: 丢失修改、不可重复读和读“脏”数据
数据不一致实例:飞机订票系统
1、什么样的并发操作调度是正确的
计算机系统对并行事务中并行操作的调度是随机 的,而不同的调度可能会产生不同的结果。 将所有事务串行起来的调度策略一定是正确的调 度策略。
如果一个事务运行过程中没有其他事务在同时 运行,也就是说它没有受到其他事务的干扰, 那么就可以认为该事务的运行结果是正常的或 者预想的
Unlock B Xlock A A=Y+1 写回A(=3)
Xlock B B=X+1 写回B(=3) Unlock B
Unlock A
(c) 不可串行化的调度(续)
由于其执行结果与(a)、(b)的结果都不同,
所以是错误的调度。
(d) 可串行化的调度
T1 T2
Slock B Y=B=2 Unlock B Xlock A A=Y+1 写回A(=3) Unlock A
什么样的并发操作调度是正确的(续)
以不同的顺序串行执行事务也有可能会产生不 同的结果,但由于不会将数据库置于不一致状 态,所以都可以认为是正确的。
几个事务的并行执行是正确的,当且仅当其 结果与按某一次序串行地执行它们时的结果相 同。这种并行调度策略称为可串行化 (Serializable)的调度。
(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
(c) 不可串行化的调度
T1 T2
Slock B Y=B=2 Slock A X=A=2 Unlock A
什么样的并发操作调度是正确的(续)
可串行性是并行事务正确性的唯一准则
例:现在有两个事务,分别包含下列操作:
事务1:读B;A=B+1;写回A;
事务2:读A;B=A+1;写回B;
假设A的初值2,B的初值为2。
什么样的并发操作调度是正确的(续)
对这两个事务的不同调度策略
串行执行
串行调度策略1
执行更新操作,使事务 1 无法再现前一次
读
取结果。
图2 三种数据不一致性(续)
T1 T2
① 读A=50 读B=100 求和=150 ②
③ 读A=50 读B=200 求和=250 (验算不对)