事务T1将数据库中的A值从50改为30,事务T2读A值为30,事务T1又将刚才的操作撤销,A值恢复为50。这种情况属于____①____,是由于数据库系统在___②_____方面的不当引起的,能解决此问题的方法是____③____。 ③

admin2021-02-03  52

问题 事务T1将数据库中的A值从50改为30,事务T2读A值为30,事务T1又将刚才的操作撤销,A值恢复为50。这种情况属于____①____,是由于数据库系统在___②_____方面的不当引起的,能解决此问题的方法是____③____。

选项 A、一级封锁协议和二级封锁协议
B、二级封锁协议和三级封锁协议
C、一级封锁协议和三级封锁协议
D、一级封锁协议、二级封锁协议和三级封锁协议

答案B

解析 本题考查数据库并发操作导致的问题及并发控制技术。
数据库中不恰当的并发操作带来的主要问题有:
①丢失修改。当两个或多个事务读入同一数据并修改,会发生丢失修改问题,前一个事务修改的结果会被后一事务所做的修改覆盖。
②不可重复读。一个事务读取某个数据后,另一事务对该数据做了修改,当前一事务再次读取该数据(希望与第一次读取的是相同的值)时,得到的数据与前一次的不一样。
③读数据。当一个事务修改某个数据后,另一事务对该数据进行了读取,由于某种原因前一事务撤销了对该数据的修改,即将修改过的数据恢复原值,相当于没有执行前一事务,那么后一事务读到的就是一个不正确的数据,称为“读脏数据”。
解决这些问题主要使用封锁机制。有三种不同级别的封锁协议可以为并发操作的正确调度提供不同程度的保证。
一级封锁协议要求事务在修改数据之前必须先对其加写锁,直到事务结束才释放。该协议可防止丢失修改,但不能保证可重复读和不读脏数据。
二级封锁协议在一级封锁协议基础上,加上事务在读取数据之前必须先对其加读锁,读完后即可释放读锁。该协议可以防止丢失修改和读脏数据,但不能保证可重复读。
三级封锁协议在一级封锁协议基础上,加上事务在读取数据之前必须先对其加读锁,直到事务结束才释放。该协议可防止丢失修改、读脏数据和不可重复读。
转载请注明原文地址:https://kaotiyun.com/show/VL0D777K
0

相关试题推荐
最新回复(0)