首页 > 试题广场 >

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

[单选题]

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


  • 该操作不存在问题
  • 该操作丢失修改
  • 该操作不能重复读
  • 该操作读“脏”数据

3种数据不一致性

1、丢失修改(lost update)
两个事务T1和T2读入同一数据并修改,T2提交结果破坏了T1提交的结果,到这T1的修改被丢失。
2、不可重复读(Non-Repeatable Read)
不可重复读是指事务T1读取数据后,事务T2执行修改操作,使T1无法再现前一次读取的结果
3、读“脏”数据(dirty read)
读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改的数据恢复原值,t2读到的数据就与数据库中的数据不一致,则T2读到的数据就是“脏”数据,即不正确的数据
编辑于 2021-04-06 11:30:04 回复(0)
脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。
发表于 2017-05-28 00:25:01 回复(0)
😫😫一直搞不清不可重复读和脏读,两者都读了两次并且结果不一致。
🙉哼,以后就区分是先读还是先修改,先读的是不可重复读,先修改的是读“脏”数据
丢失更新:两次修改,一个覆盖另一个
不可重复读:①读→修改→读(有变)
                      ②读→删除,插入→读(有变)  也称“幻读”
读“脏”数据:修改→读→撤销→读(有变)
发表于 2022-03-11 01:01:57 回复(0)
发表于 2021-05-03 19:09:13 回复(0)
事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。
关系性数据库需要遵循ACID规则
原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;
隔离性: 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;
持久性: 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。
脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。
不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。
幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。
发表于 2020-06-22 10:50:32 回复(0)

注意区分不可重复读与脏读即可 本题读了两次 并且结果不一致 明显是不可重复读

发表于 2020-02-12 11:16:47 回复(0)
同一道题,出现两次的答案却不一样,这让人怎么判断
发表于 2019-03-19 22:37:26 回复(0)
脏读,应该是事务1在进行数据修改后,事务2直接读到事务1的数据,后面事务1回滚了,造成事务2读取到错误的数据,应该不是在事务1将数据写回磁盘后,事务1再回滚,拿MySQL举例,在进行事务之前先写undo日志,在事务进行时一直写redo日志,事务的提交指的是redo日志和binlog日志(与存储引擎无关,是MySQL服务层记录的)都写入磁盘,然后才会将数据写入磁盘,此时就算宕机,MySQL也可以根据redo日志进行前滚操作,恢复事务提交后的数据,而在redo日志写入磁盘之前才能进行回滚操作,用undo日志(记录着事务更新前的数据) 进行回滚操作,所以脏读不是读入事务1写入磁盘的数据,而是直接读取事务1还在进行的数据,所以脏读也叫读未提交
发表于 2021-11-22 09:03:49 回复(0)
脏读是读到另外一个事务的值,那个事务撤销了,就像遇到鬼一样,看到脏东西了,再看一会,又没了
编辑于 2024-02-25 02:33:02 回复(0)
读了两次并且结果不一致,明显是不可重复读
发表于 2022-01-25 14:41:04 回复(0)