首页 > 试题广场 >

设有两个事务T1、T2,其并发操作如图2所示,下面评价正确的

[单选题]

设有两个事务T1T2,其并发操作如图2所示,下面评价正确的是( )。

  • 该操作不存在问题
  • 该操作丢失修改
  • 修改该操作不能重复读
  • 该操作读“脏”数据
丢失修改两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。
不可重复读:指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
读"脏"数据:指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。

产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性。
编辑于 2017-07-04 09:56:57 回复(1)
---并发操作下可能会产生并发一致性问题---
丢失修改:T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。
读脏数据:T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。
不可重复读:T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。
幻影读:T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。
产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。
编辑于 2019-06-03 11:20:34 回复(0)
修改该操作不能重复读


以后看到rollback直接选脏数据,看到两次两个事务同时修改一个事务,两次写回,直接选丢失数据,看到有一个在读一个在写直接不可重复读。
编辑于 2021-05-02 11:07:52 回复(0)
丢失修改两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。
不可重复读:指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
读"脏"数据:指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。
发表于 2017-08-19 18:19:13 回复(0)
并发操作带来数据的不一致性
发表于 2019-09-18 22:27:12 回复(0)
读脏数据要出现撤销
发表于 2021-06-13 18:34:13 回复(0)
我个人感觉,如果没有明确的目的,是没有办法判断并发操作会不会带来不良后果。
丢失修改:如果事物T1 和T2的修改立即被使用,则不会发生丢失修改。
不可重复读:如果T1后半部分的任务 希望将原来AB的和写回,则此时属于不可重复读。
读"脏"数据:该操作,不论目的是什么,都是不允许的,因为是读取数据的不一致性问题

最后,在并发场景下,如果不考虑事物之间的同步,则每个事物应该只考虑自己的目的,所以选C
发表于 2018-08-13 17:45:51 回复(0)