并发控制 课后答案(特选资料)
数据库事务处理与并发控制考试试卷
数据库事务处理与并发控制考试试卷(答案见尾页)一、选择题1. 数据库事务处理的基本概念是什么?A. 一系列的操作序列,这些操作要么全部执行成功,要么全部不执行B. 用于存储数据的软件C. 确保数据一致性的机制D. 数据库管理系统2. 事务的ACID特性是指什么?A. 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)B. 可靠性(Reliability)、可用性(Availability)、完整性(Integrity)C. 事务(Transaction)、并发(Concurrency)、恢复(Recovery)、安全(Security)D. 数据(Data)、管理(Management)、控制(Control)3. 在数据库系统中,如何实现事务的隔离性?A. 使用锁机制B. 设置事务的隔离级别C. 使用多版本并发控制(MVCC)D. 优化查询语句4. 什么是死锁?如何避免死锁?A. 两个或多个事务互相等待对方释放资源B. 数据库系统无法正常运行C. 资源分配不当导致性能下降D. 频繁进行磁盘读写操作5. 什么是并发控制的基本原则?A. 串行化(Serialization)B. 隔离性(Isolation)C. 活动锁(Pessimistic Locking)D. 乐观锁(Optimistic Locking)6. 在数据库系统中,如何确保数据的一致性?A. 使用约束(Constraints)B. 应用事务处理C. 进行数据备份D. 设计合理的索引7. 什么是阻塞?在数据库系统中如何避免阻塞?A. 事务等待某个条件满足才能继续执行B. 数据库服务器响应延迟C. 多个用户同时访问相同数据D. 网络连接中断8. 在并发控制中,哪种锁机制可以减少冲突?A. 共享锁(Shared Lock)B. 排他锁(Exclusive Lock)C. 更新锁(Update Lock)D. 行级锁(Row-Level Lock)9. 什么是乐观锁?它的实现方式是什么?A. 一种并发控制策略,通过假设冲突很少发生来减少加锁的开销B. 在每次更新数据时检查是否有其他事务修改了该数据C. 使用时间戳(Timestamp)来检测冲突D. 限制多个事务同时访问同一数据10. 在数据库系统中,如何处理事务的回滚?A. 自动回滚B. 手动回滚C. 根据错误类型决定是否回滚D. 由数据库管理员决定11. 数据库事务必须具备的特性中,哪个特性确保了事务的所有操作要么全部提交成功,要么全部失败回滚?A. 原子性(Atomicity)B. 一致性(Consistency)C. 隔离性(Isolation)D. 持久性(Durability)12. 在数据库系统中,为了保证数据的一致性和完整性,通常会使用哪种锁机制?A. 表级锁(Table-level Locking)B. 行级锁(Row-level Locking)C. 页面级锁(Page-level Locking)D. 数据库锁(Database Locking)13. 以下关于并发控制的描述,哪项是不正确的?A. 并发控制的主要目的是提高系统的并发性能B. 两阶段提交(Two-phase Commit, 2PC)是一种常用的并发控制协议C. 乐观并发控制假设冲突很少发生,因此不使用锁D. 使用锁可以避免死锁的发生14. 在数据库系统中,实现事务的原子性需要哪些方面的支持?A. 隔离性(Isolation)B. 持久性(Durability)C. 一致性(Consistency)D. 原子性(Atomicity)15. 下面关于并发控制的叙述,哪项是错误的?A. 死锁是指两个或多个事务互相等待对方释放资源的情况B. 避免死锁的一种方法是按照固定顺序对资源进行加锁C. 两阶段提交协议(2PC)可以确保所有事务都提交或都不提交D. 串行化(Serialization)是并发控制的最简单策略16. 以下关于数据库并发控制的基本原则的叙述,哪项是不正确的?A. 低隔离级别意味着更低的并发冲突B. 高隔离级别提供了更强的数据一致性保障C. 隔离级别越高,并发性能越低D. 并发性能和数据一致性之间需要权衡17. 在数据库系统中,如何处理事务的持久性?A. 将事务的所有修改写入磁盘上的日志文件B. 使用事务日志备份来恢复数据C. 在事务提交后立即将修改写入磁盘D. 使用缓存来暂存修改18. 以下关于数据库并发控制的叙述,哪项是正确的?A. 读未提交(Read Uncommitted)并发控制级别允许一个事务读取另一个尚未提交的事务的修改B. 读已提交(Read Committed)并发控制级别避免了脏读问题C. 可重复读(Repeatable Read)并发控制级别解决了不可重复读问题D. 串行化(Serializable)并发控制级别是最严格的,但也是最有效的19. 在数据库系统中,如何处理事务的隔离性和一致性的权衡?A. 根据应用的需求选择适当的隔离级别B. 尽量提高隔离级别以增强数据一致性C. 无需关注隔离级别,只需确保提交事务D. 无法在数据库层面解决隔离性和一致性的矛盾20. 数据库事务的基本特性包括()。
第8章 并发控制
第8章并发控制1 . 并发操作带来的数据不一致性包括:________ 、________ 和________ 。
(问答题)∙查看答案o丢失修改不可重复读读“脏”数据2 .在数据库中为什么要并发控制?(填空题)∙查看答案o数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
3 . 多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,我们称这种调度策略为________的调度。
(问答题)∙查看答案o可串行化4 .并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?(填空题)∙查看答案o并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。
(1)丢失修改(Lost Update)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。
(2)不可重复读(Non-Repeatable Read)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
不可重复读包括三种情况:详见《概论》8.1 p266。
(3)读“脏”数据(Dirty Read)读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
避免不一致性的方法就是并发控制。
最常用的并发控制技术是封锁技术。
也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
5 . 基本的封锁类型有两种:________ 和________ 。
(问答题)∙查看答案o排它锁(Exclusive Locks,简称X锁) 共享锁(Share Locks,简称S锁)6 .什么是封锁?(填空题)∙查看答案o封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。
并发控制
第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只能等待。
数据库基础与应用第二版课后答案王珊李盛恩编著
数据库基础与应用1.数据(DB):数据实际上是描述事物的符号纪录。
2.数据库: 数据库实际上是长期存储在计算机内的有组织的、可共享的数据集合。
3.从文件系统的视角上看去,文件是无结构的,文件只是一个字节流,因此,我们经常把文件叫做流式文件,实际上文件的数据是有结构的,数据的结构需要程序员通过编写程序来建立和维护。
4.数据库应用可以分为两大类:联机事务处理(OLTP),联机分析处理(OLAP).联机事务处理解决了组织结构业务自动化问题,而联机分析处理帮助管理层更好的分析组织结构的运站情况。
5. 数据库管理系统(DBMS):数据库管理系统是一类重要的软件,由一组程序组成。
其主要功能是完成对数据库的定义、数据操作。
提供给用户一个简明的接口,实现事务处理等。
6.数据库管理系统的基本功能:数据的定义功能数据操作功能数据库的运行和管理数据库的建立和维护功能7.数据库管理系统由两大部分组成:查询处理器存储管理器8.层次结构:应用层语言翻译层数据存取层数据存储层操作系统数据库9. 数据库系统:数据库系统是基于数据库的计算机应用的系统,有四部分组成数据库数据管理系统应用系统用户。
10. 数据库管理员的职责:(1)决定数据库中要存储的数据及数据结构(2)决定数据库的存储结构和存取策略(3)保证数据的安全性和完整性(4)监控数据库的使用和运行(5)数据库的改进和重组重构11.数据模型的三要素:数据结构数据操作完整性约束12. 数据结构是所研究的对象的类型的集合,这些对象是数据库的组成成分,他们包含两类:一类是与数据之间联系有关的对象。
一类是与数据之间联系有关的对象。
13. 数据操作:数据库主要有检索和更新(插入、删除、修改)两大类操作。
14.在关系模型中任何关系都要满足实体完整性和参照完整性。
15.三种数据模型:概念模型逻辑模型物理模型逻辑模型中有:层次模型网状模型关系模型面向对象模型对象关系模型其中层次模型和网状模型统称为非关系模型。
《数据库系统概论》复习重点习题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代码错误等。
数据库事务处理与并发控制试卷
数据库事务处理与并发控制试卷(答案见尾页)一、选择题1. 数据库事务的基本特性包括()。
A. 原子性B. 一致性C. 隔离性D. 持久性2. 在数据库系统中,事务必须满足的条件有()。
A. 原子性B. 一致性C. 隔离性D. 持久性3. 下列哪些选项是数据库事务的正确隔离级别?()A. 读未提交B. 读已提交C. 可重复读D. 串行化4. 在并发控制中,死锁是指两个或多个事务在互相等待对方释放资源的情况下,无法继续执行的状态。
请判断以下哪些情况可能导致死锁?()A. 先请求资源R1,再请求资源R2B. 先请求资源R1,再请求资源R2,然后释放资源R1C. 先请求资源R1,再请求资源R2,然后请求资源R3D. 先请求资源R1,再请求资源R2,然后释放资源R1,接着请求资源R25. 什么是ACID属性?()A. 原子性(Atomicity)B. 一致性(Consistency)C. 隔离性(Isolation)D. 持久性(Durability)6. 数据库事务具有哪些特性?(ACID)A. 原子性(Atomicity)B. 一致性(Consistency)C. 隔离性(Isolation)D. 持久性(Durability)7. 在数据库系统中,如何实现事务的隔离性?(ABC)A. 使用锁机制(Locking Mechanism)B. 使用多版本并发控制(Multi-Version Concurrency Control, MVCC)C. 使用时间戳(Timestamp)D. 使用死锁检测(Deadlock Detection)8. 什么是死锁?(D)A. 两个或多个事务互相等待对方释放资源B. 一个事务无法完成执行C. 数据库系统崩溃D. 以上都不是9. 如何解决死锁问题?(AB)A. 避免长时间持有锁B. 使用锁超时(Lock Timeout)C. 回滚事务(Rollback Transaction)D. 重新启动事务10. 什么是并发控制?(C)A. 确保数据库系统的安全性B. 确保数据库系统的完整性C. 确保数据库系统的并发性和性能D. 确保数据库系统的可靠性11. 在数据库系统中,如何处理并发访问冲突?(ABC)A. 使用锁机制(Locking Mechanism)B. 使用乐观锁(Optimistic Locking)C. 使用悲观锁(Pessimistic Locking)D. 使用时间戳(Timestamp)12. 什么是乐观锁?(B)A. 一种并发控制策略,通过假设冲突很少发生来减少锁的使用B. 一种并发控制策略,通过在读取数据时检查数据是否被其他事务修改来判断是否存在冲突C. 一种并发控制策略,通过在提交事务时检查数据是否被其他事务修改来判断是否存在冲突D. 一种并发控制策略,通过在写入数据时检查数据是否被其他事务修改来判断是否存在冲突13. 什么是悲观锁?(C)A. 一种并发控制策略,通过在读取数据时检查数据是否被其他事务修改来判断是否存在冲突B. 一种并发控制策略,通过在提交事务时检查数据是否被其他事务修改来判断是否存在冲突C. 一种并发控制策略,通过在写入数据时检查数据是否被其他事务修改来判断是否存在冲突D. 一种并发控制策略,通过在读取数据时检查数据是否被其他事务修改来判断是否存在冲突14. 在数据库系统中,如何优化查询性能?(ABCD)A. 使用索引(Indexing)B. 使用分区(Partitioning)C. 使用缓存(Caching)D. 使用连接查询(Join Query Optimization)15. 在数据库系统中,如何确保数据的完整性?(ABD)A. 使用约束(Constraints)B. 使用触发器(Triggers)C. 使用存储过程(Stored Procedures)D. 使用事务(Transactions)16. 数据库事务的基本特性包括哪些?A. 原子性B. 一致性C. 隔离性D. 持久性17. 在数据库系统中,如何实现事务的隔离性?A. 使用锁机制B. 使用多版本并发控制(MVCC)C. 使用时间戳排序D. 使用行级锁18. 什么是死锁?如何避免死锁?A. 死锁是指两个或多个事务互相等待对方释放资源的情况B. 避免死锁的方法包括按照固定顺序访问资源、使用锁超时、检测并解决死锁C. 死锁只发生在并发事务中D. 死锁是数据库系统的正常现象19. 什么是事务的持久性?如何确保事务的持久性?A. 持久性是指事务处理结束后,其结果仍然存在于数据库中B. 确保事务持久性的方法是使用日志记录和恢复技术C. 持久性只适用于本地数据库D. 持久性与并发控制无关20. 在数据库系统中,如何处理事务的回滚操作?A. 回滚操作是将事务的所有更改撤销,使数据库回到事务开始前的状态B. 回滚操作通常由用户手动执行C. 回滚操作只在发生错误时才需要D. 回滚操作总是自动执行21. 什么是并发控制?为什么需要并发控制?A. 并发控制是指在多个事务同时运行时,确保它们不会相互干扰的技术B. 并发控制可以防止数据不一致和破坏C. 并发控制只适用于数据库系统D. 并发控制与操作系统性能无关22. 在数据库系统中,如何实现并发控制中的安全性控制?A. 使用访问控制列表(ACL)来限制用户对资源的访问B. 使用加密技术来保护数据的机密性C. 使用时间戳排序来避免冲突D. 使用多版本并发控制(MVCC)来提高并发性能23. 在数据库系统中,如何实现并发控制中的完整性控制?A. 使用约束条件来限制用户的输入B. 使用触发器来强制数据的一致性C. 使用事务来保证数据的一致性D. 使用存储过程来限制用户的操作24. 在数据库系统中,如何实现并发控制中的可靠性控制?A. 使用备份和恢复技术来恢复丢失的数据B. 使用日志记录和恢复技术来保证数据的一致性C. 使用事务的原子性和一致性来保证数据的可靠性D. 使用多副本技术来提高数据的可靠性25. 在数据库系统中,如何实现并发控制中的可用性控制?A. 使用缓存技术来提高查询性能B. 使用负载均衡技术来分配系统资源C. 使用索引优化技术来提高查询速度D. 使用分布式技术来扩展系统容量26. 数据库事务必须具备的特性中,哪个不是?A. 原子性(Atomicity)B. 一致性(Consistency)C. 隔离性(Isolation)D. 持久性(Durability)27. 在数据库系统中,事务的隔离级别由低到高依次是什么?A. 读未提交、读已提交、可重复读、串行化B. 读未提交、读已提交、串行化、可重复读C. 读未提交、读已提交、可重复读、串行化D. 读已提交、读未提交、可重复读、串行化28. 下面哪个不是数据库事务处理的关键要素?A. 隔离性(Isolation)B. 持久性(Durability)C. 原子性(Atomicity)D. 一致性(Consistency)29. 在数据库系统中,实现事务的隔离性需要考虑哪些因素?A. 数据库锁机制B. 数据库索引C. 数据库设计D. 数据库性能30. 什么是事务的ACID属性?请简要解释每个属性的含义。
王珊《数据库系统概论》章节题库(并发控制)【圣才出品】
第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【解析】一级封锁协议可防止丢失修改;二级封锁协议可以防止丢失修改和读“脏”数据;三级封锁协议可防止丢失修改、读“脏”数据和不可重复读。
(完整word版)课后习题
第11章并发控制为保障事务的隔离性和一致性,DBMS需要对并发操作进行正确的调度。
可串行化调度:多个事务并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,称这种调度策略为可串行化的1.在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取或修改同一数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
数据库管理系统必须提供并发控制机制。
2.并发操作会产生哪几类数据不一致?用什么方法能避免答:(1)并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。
(2)避免方法和技术就是并发控制。
最常用技术是封锁技术。
或者时间戳和乐观控制法。
9 .设Tl ,几,几是如下的 3 个事务:Tl :A : = A + 2 ; T2:A : = A * 2 ; T3:A : = A **2 ; ( A <-A*A)设A 的初值为0 。
( l )若这3 个事务允许并行执行有多少可能的正确结果,请一一列举出来。
答:A 的最终结果可能有2 、4 、8 、16 。
因为串行执行次序有Tl T2T3、Tl T3T2、T2T1T3、T2T3Tl 、T3T1T2、T3T2 Tl 。
对应的执行结果是16 、8 ·4 ·2 ·4 ·2 。
( 2 )请给出一个可串行化的调度,并给出执行结果最后结果A 为16 ,是可串行化的调度。
( 3 )请给出一个非串行化的调度,并给出执行结果。
答:最后结果A 为0 ,为非串行化的调度。
( 4 )若这3 个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。
( 5 )若这3 个事务都遵守两段锁协议,请给出一个产生死锁的调度。
第10章数据库恢复技术1.试述事务的概念及事务的4 个特性。
答:事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
第八章 数据库并发控制练习和答案
第八章数据库并发控制一、选择题1.为了防止一个用户得工作不适当地影响另一个用户,应该采取( )。
A、完整性控制B、访问控制C、安全性控制D、并发控制2、解决并发操作带来得数据不一致问题普遍采用()技术。
A、封锁B、存取控制C、恢复D、协商3.下列不属于并发操作带来得问题就是( )。
A、丢失修改B、不可重复读C、死锁D、脏读4.DBMS普遍采用( )方法来保证调度得正确性。
A、索引B、授权C、封锁D、日志5.事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,这就是()。
A、一级封锁协议B、二级封锁协议C、三级封锁协议D、零级封锁协议6.如果事务T获得了数据项Q上得排她锁,则T对Q( )。
A、只能读不能写B、只能写不能读C、既可读又可写D、不能读也不能写7。
设事务T1与T2,对数据库中地数据A进行操作,可能有如下几种情况,请问哪一种不会发生冲突操作() .A、T1正在写A,T2要读AB、T1正在写A,T2也要写AC、T1正在读A,T2要写AD、T1正在读A,T2也要读A8。
如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突得操作就是() .A、一个就是DELETE,一个就是SELECTB、一个就是SELECT,一个就是DELETEC、两个都就是UPDATED、两个都就是SELECT9.在数据库系统中,死锁属于()。
A、系统故障B、事务故障C、介质故障D、程序故障二、简答题1、在数据库中为什么要并发控制?答:数据库就是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取与/或修改同一数据得情况.若对并发操作不加控制就可能会存取与存储不正确得数据,破坏数据库得一致性。
所以数据库管理系统必须提供并发控制机制。
2、并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致得情况?答: 并发操作带来得数据不一致性包括三类:丢失修改、不可重复读与读“脏”数据.(1)丢失修改(LostUpdate)两个事务T1与T2读入同一数据并修改,T2提交得结果破坏了(覆盖了)T1提交得结果,导致T1得修改被丢失。
《数据库技术与应用》第9章 并发控制 习题答案
第9章并发控制1. 试述DBMS中采用并发控制的目的。
解:并发控制是以事务为单位进行的。
DBMS中的并发控制的目的是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。
2. 试述共享锁和排他锁的含义。
解:排它锁又称为写锁。
排他锁是最严格的一类封锁,当需要对表进行插入、删除或更新操作时,应该使用排他锁。
当一个事务对某数据加上排他锁后,其他事务不得对该数据对象施加任何封锁。
共享锁又称为读锁。
当一个事务队某数据对象加上共享锁后,其他事务可以读取该数据,不能对该数据对象做任何修改。
共享锁可以保证最大的并发性,任何数量的用户可以同时对相同的数据施加共享锁。
3. 试述死锁是如何产生的,列举一些常见的预防死锁的方法。
解:产生死锁的原因是两个或多个事务都锁定了一些数据库对象,然后又都需要锁定对方的数据库对象失败而需要等待所造成的。
预防死锁通常有两种方法:一次封锁法和顺序封锁法。
一次封锁法要求每个事务一次就将要操作的数据库对象全部锁定,否则就不继续执行。
该方法会降低系统的并发度。
顺序封锁法要求预先对数据库对象规定一个封锁顺序,所有事务都按这个顺序来实行封锁。
该方法算法复杂,成本高。
4. 简述数据库系统中经常用到检测和解除死锁的方法。
解:数据库系统中检测死锁一般使用超时法或事务等待图法。
数据库管理系统一般采用如下方法来解除死锁:在循环等待的事务中,选择一个事务作为牺牲者,给其他事务“让路”。
回滚牺牲的事务,释放其获得的锁及其他资源。
将释放的锁让给等待它的事务。
5. 简述多粒度封锁的含义以及优点。
解:同时支持多种锁定粒度供事务选择的封锁方法叫做多粒度封锁。
其中,封锁对象可以是数据库、表、记录、列、索引等的逻辑单元,也可以是数据页或索引页、块等的物理单元。
采用多种粒度封锁能够提高并发度和减少锁的数量。
6. 试述意向锁的含义,简要介绍几种常见的意向锁。
解:意向锁的含义是,如果对一个节点加某种意向锁,则会对该节点的各级下级节点加这种锁;如果对一个节点加某种锁,则必须先对该节点的各级上级节点加这种意向锁。
并发控制练习题
数据库系统工程师
11
12
条评价是正确的。
A.该操作不能重复读
B.该操作丢失修改
C.该操作符合完整性要求
D.该操作的t1步中,事务T1
应申请X锁
E.该操作的t2步中,事务T2
8
选择题
11.解决并发操作带来的数据不一致问题时普遍采用 _____。
A.封锁 B.恢复 C.存取控制 D.协商 12.若事务T对数据R已加X锁,则其他事务对数据
选择题
1.若事务T对数据对象A加上X锁,则________。 A.只允许T修改A,其它任何事务都不能再对A加任
何类型的锁。 B.只允许T读取A,其它任何事务都不能再对A加任
何类型的锁。 C.只允许T读取和修改A,其它任何事务都不能再对
A加任何类型的锁。 D.只允许T修改A,其它任何事务都不能再对A加X
R_____、 A.可以加S锁不能加X锁 B.不能加S锁可以加X锁 C.可以加S锁也可以加X锁 D.不能加任何锁 答案:11.A 12.D
9
选择题
13.并发操作会带来哪些数据不一致_____。 A.丢失修改、不可重复读、脏读、死锁 B.不可重复读、脏读、死锁 C.丢失修改、脏读、死锁 D.丢失修改、不可重复读、脏读 答案:D
锁。 答案:C
1
选择题
2.若事务T对数据对象A加上S锁,则________。 A.事务T可以读A和修改A,其它事务只能再对A加S
锁,而不能加X 锁。 B.事务T可以读A但不能修改A,其它事务能对A加S
锁和X锁。 C.事务T可以读A但不能修改A,其它事务只能再对
A加S锁,而不能加X 锁。 D.事务T可以读A和修改A,其它事务能对A加S锁和
6
选择题
数据库系统概论CH11部分习题解答
第十一章并发控制事务处理技术主要包括数据库恢复技术和并发控制技术。
本章讨论数据库并发控制的根本概念和实现技术。
本章内容有一定的深度和难度。
读者学习本章一定要做到概念清楚。
一、根本知识点数据库是一个共享资源,当多个用户并发存取数据库时就会产生多个事务同时存取同一个数据的情况。
假设对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以DBMS必须提供并发控制机制。
并发控制机制的正确性和高效性是衡量一个DBMS性能的重要标志之一。
①需要了解的: 数据库并发控制技术的必要性,活锁死锁的概念。
②需要结实掌握的: 并发操作可能产生数据不一致性的情况(丧失修改、不可重复读、读“脏数据〞)及其确切含义;封锁的类型;不同封锁类型的(例如X 锁,S锁)的性质和定义,相关的相容控制矩阵;封锁协议的概念;封锁粒度的概念;多粒度封锁方法;多粒度封锁协议的相容控制矩阵。
③需要举一反三的:封锁协议与数据一致性的关系;并发调度的可串行性概念;两段锁协议与可串行性的关系;两段锁协议与死锁的关系。
④难点:两段锁协议与串行性的关系;与死锁的关系;具有意向锁的多粒度封锁方法的封锁过程。
二、习题解答和解析1. 在数据库中为什么要并发控制? 并发控制技术能保证事务的哪些特性?答数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
假设对并发操作不加控制就可能会存取和存储不正确的数据,破坏事务的一致性和数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
并发控制技术能保证事务的隔离性和一致性。
2. 并发操作可能会产生哪几类数据不一致? 用什么方法能防止各种不一致的情况?答并发操作带来的数据不一致性包括三类:丧失修改、不可重复读和读“脏〞数据。
(1) 丧失修改(Lost Update)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丧失。
第3章进程并发控制作业题参考答案
第3章进程并发控制作业题参考答案作业题题1进程间的互斥与同步表示了各进程间的______。
A.竞争与协作B. 相互独立与相互制约C .临界区调度原则 D. 动态性与并发性题2 若执行信号量S操作的进程数为3,信号量S初值为2,当前值为-1,表示有____个等待相关临界资源的进程。
A 0B 1C 2D 3题 3 由于并发进程执行的随机性,一个进程对另一个进程的影响是不可预测的,甚至造成结果的不正确,_________。
A.造成不正确的因素与时间有关B. 造成不正确的因素只与进程占用的处理机有关C.造成不正确的因素与执行速度无关D. 造成不正确的因素只与外界的影响有关题4 下列机构中不能用于进程间数据通信的是____________。
A.消息B.共享存储区C. 信号量D.管道题5 下面有关管程的说法,不正确的是________A.管程是种进程同步机制B. 管程是一种编程语言成分C. 管程是一种系统调用D.管程比信号量更容易保证并行编程的正确性题6 什么是临界资源和临界区?一个进程进人临界区的调度原则是什么?题7 进程之间存在哪几种制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?(1)图书馆借书。
属于互斥关系。
(2)两队举行篮球赛。
既有互斥关系,又有同步关系。
(3)流水生产线。
属于同步关系。
(4)乐队演奏。
属于同步关系。
(5)购买火车票。
属于互斥关系。
题8 在生产者消费者问题中,如果将两个P操作即生产者程序流程中的P(buffers)和P(mutex)互换位置.结果会如何? 形成死锁。
题9 试用P、V操作描述下列理发师和顾客之间的同步问题。
某个理发师当没有顾客时,去睡觉;当有顾客来理发,若理发师正在睡觉时,这个顾客会叫醒他,理发师给该顾客理发,理发期间若还有顾客到达则等待理发师依次理发,直到没有顾客到来,理发师又去睡觉。
wakeup,wait,mutex:semaphore;wakeup:=0;wait:=0;mutex:=1;cobegin顾客进程:{p(mutex);rc=rc+1;if(rc==1) v(wakeup);else p(wait);v(mutex);理发;}理发师进程:{P(wakeup);While(rc!=0){理发;p(mutex);rc=rc-1;if(rc!=0)v(wait);v(mutex);}}coend自测题一、选择题1.并发性是指若干事件在______发生。
并发掌握 课后答案
更新后的值,再按此新的 A 值进行运算。这样就 不会丢失 T1 的更新。
DBMS 按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可 以避免丢失修改、不可重复读和读"脏"数据等数据不一致性。
6.什么是封锁协议?不同级别的封锁协议的主要区别是什么? 答:在运用封锁技术对数据加锁时,要约定一些规则。例如,在运用 X 锁和 S 锁对数据
答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读"脏"数据。 (1)丢失修改(Lost Update)两个事务 T1 和 T2 读入同一数据并修改,T2 提交的结果破 坏了(覆盖了)T1 提交的结果,导致 T1 的修改被丢失。 (2)不可重复读(Non -Repeatable Read)不可重复读是指事务 T1 读取数据后,事务 T2 执行更新操作,使 T1 无法再现前一次读取结果。不可重复读包括三种情况:详见《概论》 8.1(P266)。 (3)读"脏"数据(Dirty Read)读"脏"数据是指事务 T1 修改某一数据,并将其写回磁盘, 事务 T2 读取同一数据后,T1 由于某种原因被撤销,这时 T1 已修改过的数据恢复原值,T2 读 到的数据就与数据库中的数据不一致,则 T2 读到的数据就为"脏"数据,即不正确的数据。 避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他 技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。 3. 3. 什么是封锁? 答:封锁就是事务 T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求, 对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务 T 释放它的锁之前,其他 的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。 4. 4. 基本的封锁类型有几种?试述它们的含义。 答:基本的封锁类型有两种:排它锁(Exclusive Locks, 简称 X 锁 )和共享锁(Share Locks,简称 S 锁)。 排它锁又称为写锁。若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和修改 A,其他 任何事务都不能再对 A 加任何类型的锁,直到 T 释放 A 上的锁。这就保证了其他事务在 T 释 放 A 上的锁之前不能再读取和修改 A。 共享锁又称为读锁。若事务 T 对数据对象 A 加上 S 锁,则事务 T 可以读 A 但不能修改 A,其 他事务只能再对 A 加 S 锁,而不能加 X 锁,直到 T 释放 A 上的 S 锁。这就保证了其他事务可 以读 A,但在 T 释放 A 上的 S 锁之前不能对 A 做任何修改。 5.如何用封锁机制保证数据的一致性 ? 答:DBMS 在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务 T1 在对 A 进行修改之前先对 A 执行 XLock(A),即对 A 加 X 锁。这样,当 T2 请求对 A 加 X 锁 时就被拒绝,T2 只能等待 T1 释放 A 上的锁后才能获得对 A 的 X 锁,这时它读到的 A 是 T1
并发控制 课后答案
第八章并发控制习题解答和解析1.1. 在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
2.2. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读"脏"数据。
(1)丢失修改(Lost Update)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。
(2)不可重复读(Non -Repeatable Read)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
不可重复读包括三种情况:详见《概论》8.1(P266)。
(3)读"脏"数据(Dirty Read)读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。
避免不一致性的方法和技术就是并发控制。
最常用的技术是封锁技术。
也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
3. 3.什么是封锁?答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。
加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。
封锁是实现并发控制的一个非常重要的技术。
4. 4.基本的封锁类型有几种?试述它们的含义。
答:基本的封锁类型有两种:排它锁(Exclusive Locks, 简称 X 锁 )和共享锁(Share Locks,简称 S 锁)。
并发控制
三种常用的意向锁: 意向共享锁(Intent Share Lock,简称IS锁); 意向排它锁(Inient Exclusive Lock,简称IX锁); 共享意向排它锁(Share Intent Exclusive Lock,简称SIM锁)。
8.7.2 意向锁
意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁; 对任一结点加锁时,必须先对它的上层结点加意向锁。
例如,对任一元组加锁时,必须先对它所在的关系加意向锁。 事务T要对关系Rl加X锁时,系统只要检查根结点数据库和关系R1是否已加了不相 容的锁,而不再需要搜索和检查R1中的每一个元组是否加了X锁。
•基本的ቤተ መጻሕፍቲ ባይዱ锁类型有两种:
(1)排它锁(Exclusive Locks,简称X锁)
排它锁又称为写锁。A加上X锁,则只允许T读取和修改A,其他任何事务都不 能再对A加任何类型的锁 .
(2)共享锁(ShareLocks,简称S锁)
共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修 改A,其他事务只能再对A加S锁,而不能加X锁
一、活锁
8.4 活锁和死锁
•避免活锁的简单方法是采用先来先服务的策略。
二、死锁
目前在数据库中解决死锁问题主要有两类方法: (1)采取一定措施来预防死锁的发生, (2)允许发生死锁,采用一定手段定期诊断系统中有无死锁,若有则解除之。
1.死锁的预防 (1)一次封锁法
一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不 能继续执行。
•在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
三、三级封锁协议
•三级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁, 直到事务结束才释放。
并发控制-课后答案
并发控制■课后答案数据T2读入同一数 °T1和 (覆盖了 )T1 可 读是使重复无 roll 0 复读疋读包括 ⑶读表、' 表。
重4. 4.要基第八章并发控制「答:本本锁封类型Exclusive Lock 匚 Share Locks,简称 S排它锁又称为写锁。
若事篦旅T 对数据对象A *排锁锁又对为加任if!锁对其他任& 加上共锁卅和可以读事但不能修改居对其A加上但如何释封锁机制保证之据不 先对该进能样之前操!求对 绝,T 2锁。
这时待它当 按此新的A 值进 新。
_ .......... 的加新才进行运算。
这样就不会丢 锁新才,丁w① ZlDck 3②读A=16*'in&ck Mv^vVTrwv^rv③ A-*-JL-l務J写回A=15Commit 等待*Unlock A荻得切读 A=15-' 写回A=14t⑤Unlock 2制议uw 锁 序地执行就可以避性修改、不可重复读和读"脏"数据等数据不一致 区别是是么是么锁协议?不同级别的封锁协议的主要 一些规答则:在运如 加锁等则要约 (lockin封议;疋或Protocol:口封锁技术对数据加加锁 在运用则X !和 论的封锁协中么操三级封的请封锁/何时申请封锁以及何时释放锁(即持锁。
R之前必事完后即可在请封锁丿何时时间一长封锁协议:善务T 须先数级封之前必须到事对封读放数级R之刖必须先对封读取释级封之前必须先级封7.不同封锁协议与系统一致性级别的关系是什答:不同的封锁协议对应不同的一致性级修改复读和不读么?别。
不加可恢脏"数据II完数良封后立致性保证操事操事作务作务结结结结束束束束释释释释放放放放不丢失修改不读"脏"数据可重复读8.什么是活锁?什么是死锁?答:TI T2 T3 T4lockR的封锁远等系统这批准■lock R■等待lock R .Un lock 等待■lock R■等待■等待■等待■等待■等待Un lock 等待■等待■lock R■等待.活锁的含实是该 R2,然于封锁R 1等因. 封锁等待因锁 结束等待成-一T2T1务等待时间太长,似乎被 R2待lock R1等待9试述活活锁产 照其待某顺序: 策略避当 数略子系 10.请待个被其他 的条防止预[原因和解决方法。
事务调度与并发控制
事务调度与并发控制(总分:80.00,做题时间:90分钟)一、{{B}}选择题{{/B}}(总题数:29,分数:58.00)1.某系统中事务T1从账户A转出资金到账户B中,在此事务执行过程中,另一事务T2要进行所有账户金额统计操作。
在T1和T2事务成功提交后,数据库服务器突然掉电重启。
为了保证T2事务统计结果及重启后A,B两账户金额正确,需利用到的事务性质分别是______。
∙ A.一致性和隔离性∙ B.隔离性和持久性∙ C.原子性和一致性∙ D.原子性和持久性(分数:2.00)A.B. √C.D.解析:[解析] 本题考查的知识点是事务性质。
两个事务并发执行时,隔离性保证其并行结果的正确。
当事务提交后断电,则持久性保证其对数据库的改变是永久的,结果不受影响。
即本题的答案为B。
2.在SQL Server 2000中,某数据库中有教师表(教师号,姓名,职称),其中教师号的数据类型是整型,其他均为字符类型。
若教师表中当前没有数据,用户在数据库中依次执行下列语句:Ⅰ.BEGIN TRANSACTION T1Ⅱ.INSERT INTO 教师表 VALUES(1000, '张三', '助教');Ⅲ.INSERT INTO 教师表 VALUES(1001, '王二', '助教');Ⅳ.COMMIT T1;Ⅴ.BEGIN TRANSACTION T2;Ⅵ.INSERT INTO 教师表 VALUES(1002, '王三', '讲师');Ⅶ.INSERT INTO 教师表 VALUES(1003, '李四', '讲师');Ⅷ.COMMIT T2;在Ⅶ执行的时候数据库所在的服务器突然掉电,当数据库系统重新启动后,教师表中包含的数据条数为______。
∙ A.4条∙ B.3条∙ C.2条∙ D.0条(分数:2.00)A.B.C. √D.解析:[解析] 一个事务由一系列操作组成,事务的执行表现为事务中各个操作的执行,包括对数据库对象的读写操作,此外每个事务还应该具有结束操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章并发控制习题解答和解析1. 1.在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
2. 2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读"脏"数据。
(1)丢失修改(Lost Update)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。
(2)不可重复读(Non -Repeatable Read)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
不可重复读包括三种情况:详见《概论》8.1(P266)。
(3)读"脏"数据(Dirty Read)读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。
避免不一致性的方法和技术就是并发控制。
最常用的技术是封锁技术。
也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
3. 3.什么是封锁?答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。
加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。
封锁是实现并发控制的一个非常重要的技术。
4. 4.基本的封锁类型有几种?试述它们的含义。
答:基本的封锁类型有两种:排它锁(Exclusive Locks, 简称 X 锁 )和共享锁(Share Locks,简称 S 锁)。
排它锁又称为写锁。
若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
共享锁又称为读锁。
若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
5.如何用封锁机制保证数据的一致性 ?答:DBMS在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务T1在对A进行修改之前先对A执行XLock(A),即对A加X锁。
这样,当T2请求对A加X锁时就被拒绝,T2只能等待T1释放A上的锁后才能获得对A的X锁,这时它读到的A是T1更新后的值,再按此新的A值进行运算。
这样就不会丢失T1的更新。
DBMS按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读"脏"数据等数据不一致性。
6.什么是封锁协议?不同级别的封锁协议的主要区别是什么?答:在运用封锁技术对数据加锁时,要约定一些规则。
例如,在运用X锁和S锁对数据对象加锁时,要约定何时申请X锁或S锁、何时释放封锁等。
这些约定或者规则称为封锁协议(locking Protocol)。
对封锁方式约定不同的规则,就形成了各种不同的封锁协议、不同级别的封锁协议,例如《概论》8.3中介绍的三级封锁协议,三级协议的主要区别在于什么操作需要申请封锁,何时申请封锁以及何时释放锁(即持锁时间的长短)。
一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。
三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
7.不同封锁协议与系统一致性级别的关系是什么?答:不同的封锁协议对应不同的一致性级别。
一级封锁协议可防止丢失修改,并保证事务T是可恢复的。
在一级封锁协议中,对读数据是不加S锁的,所以它不能保证可重复读和不读"脏"数据。
二级封锁协议除防止了丢失修改,还可进一步防止读"脏"数据。
在二级封锁协议中,由于读完数据后立即释放S锁,所以它不能保证可重复读。
在三级封锁协议中,无论是读数据还是写数据都加长锁,即都要到事务结束才释放封锁。
所以三级封锁协议除防止了丢失修改和不读"脏"数据外,还进一步防止了不可重复读。
下面的表格清楚地说明了封锁协议与系统一致性的关系。
X锁S锁一致性保证操作结束释放事务结束释放操作结束释放事务结束释放不丢失修改不读"脏"数据可重复读一级封锁协议√√二级封锁协议√√√√三级封锁协√√√√√议8.什么是活锁?什么是死锁?答: TI T2 T3 T4lock R . . .. lock R . .. 等待 lock R .Unlock 等待 . lock R. 等待 . 等待. 等待 . 等待. 等待 Unlock 等待. 等待 . lock R. 等待 . .如果事务T1封锁了数据R,事务T2飞又请求封锁R,于是T2等待。
T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。
然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……T2有可能永远等待,这就是活锁的情形。
活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。
如果事务Tl封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。
接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放Rl上的锁。
这样就出现了T1在等待T2,而T2又在等待Tl的局面,T1和T2两个事务永远不能结束,形成死锁。
T1 T2lock R1 .. lock R2. .lock R2 .等待 .等待 lock R1等待等待9.试述活锁的产生原因和解决方法。
答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
避免活锁的简单方法是采用先来先服务的策略。
当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。
10.请给出预防死锁的若干方法。
答:在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。
防止死锁的发生其实就是要破坏产生死锁的条件。
预防死锁通常有两种方法:(1)一次封锁法,要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行;(2)顺序封锁法,预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。
不过,预防死锁的策略不大适合数据库系统的特点,具体原因可参见《概论》8.4。
11.请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?答:数据库系统一般采用允许死锁发生,DBMS检测到死锁后加以解除的方法。
DBMS中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。
超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。
若时限设置得太长,又不能及时发现死锁发生。
DBMS并发控制子系统检测到死锁后,就要设法解除。
通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。
当然,对撤销的事务所执行的数据修改操作必须加以恢复。
12.什么样的并发调度是正确的调度?答:可串行化(Sertalizable)的调度是正确的调度。
可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。
13.设T1,T2,T3是如下的3个事务:T1:A:=A+2;T2:A:=A*2;T3:A:=A**2;设A的初值为0。
(1)若这3个事务允许并行执行,则有多少可能的正确结果,请一一列举出来。
答:A的最终结果可能有2、4、8、16。
因为串行执行次序有T1 T2 T3、T1 T3 T2、T2 T1 T3、T2 T3 T1、T3 T1 T2、T3 T2 T1。
对应的执行结果是16、8、4、2、4、2。
(2)请给出一个可串行化的调度,并给出执行结果答:T1 T2 T3slock AY=A=OUnlock AXlock ASlock A。