全部科目 > 数据库系统工程师 >
2022年上半年 上午试卷 综合知识
第 55 题
知识点 不可重复读   丢失修改   读脏数据   封锁协议  
关键词 不可重复读   数据   协议  
章/节 事务管理  
 
 
一级封锁协议能够防止()。
丢失修改不可重复读读脏数据
 
  A.  ①
 
  B.  ①②
 
  C.  ②③
 
  D.  ③




 
 
相关试题     事务管理 

  第67题    2023年上半年  
事务故障时可能已对数据库进行了修改,为了消除该事务对数据库的影响,要利用日志文件中的记录,强行()该事务,将数据库恢复到初始状态。

  第51题    2018年上半年  
数据库的并发操作可能带来的问题包括( )

  第48题    2025年上半年  
事务T1、T2和T3对相同的一组数据A、B和C进行操作,对于如下的一个并发调度,其中T1与T2间并发操作(45) , T2与T3间并发操作(46)。

 
知识点讲解
· 不可重复读
· 丢失修改
· 读脏数据
· 封锁协议
 
        不可重复读
        如上图(b)所示,事务T1读取A、B的值后进行运算,事务T2在t5时刻对B的值做了修改以后,事务T1又重新读取A、B的值再运算,同一事务内对同一组数据的相同运算结果不同,显然与事实不相符。同样是事务T2干扰了事务T1的独立性。
 
        丢失修改
        如上图(a)所示,事务T1、T2都是对数据A做减1操作。事务T1在时刻t5把A修改后的值15写入数据库,但事务T2在时刻t7再把它对A减1后的值15写入。两个事务都是对A的值进行减1操作并且都执行成功,但A中的值却只减了1。现实的例子如售票系统,同时售出了两张票,但数据库里的存票却只减了一张,造成数据的不一致。原因在于T1事务对数据库的修改被T2事务覆盖而丢失了,破坏了事务的隔离性。
 
        读脏数据
        如上图(c)所示,事务T1对数据C修改之后,在t4时刻事务T2读取修改后的C值做处理,之后事务T1回滚,数据C恢复了原来的值,事务T2对C所做的处理是无效的,它读的是被丢掉的垃圾值。
        通过以上三个例子,在事务并行处理的过程中,因为多个事务对相同数据的访问,干扰了其他事务的处理,产生了数据的不一致性,这是因事务的隔离性被破坏。
        问题的焦点在于事务在读写数据时不加控制而相互干扰。解决问题的方法是从如何保证事务的隔离性入手。
 
        封锁协议
        封锁协议有三个级别:一级封锁协议、二级封锁协议和三级封锁协议。具体描述如下:
        (1)一级封锁协议:是事务T在修改数据A之前必须先对其加X锁,直到事务结束才释放X锁。一级封锁协议使得在一个事务修改数据期间,其他事务不能对该数据进行修改,只能等到该事务结束,解决了丢失修改的问题。
        (2)二级封锁协议:是一级封锁协议加上事务T在读取数据A之前必须对其加上S锁,读完后即可释放S锁。二级封锁协议使得一个事务不能读取被其他事务修改中的数据。解决了读脏数据的问题。但是,如果事务T在读取数据A之后,其他事务再对A做完修改,事务T再读取A,还会产生不可重复读的错误。
        (3)三级封锁协议:是一级封锁协议加上事务T在读取数据A之前必须对其加上S锁,直到事务结束才释放S锁。三级封锁协议使得一个事务读取数据期间,其他事务只能读取该数据而不能修改,解决了不可重复读的问题。



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有