Oracle并发控制与事务隔离

本文探讨了Oracle数据库中并发访问及多版本控制机制。详细分析了在不同情况下,两个会话如何获取数据,以及Oracle如何确保数据一致性,特别是在长时间查询过程中如何保持数据的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表在被session1 select时,同时其数据被另一session2访问并进行DML更新时.这2个session分别从哪里获取数据?session1最终显示的是什么?怎么解释? 

  • 这个问题的点是:Oracle多版本与并发的问题,这里也正是Oracle与其他数据库的区别点之一.分2种情况介绍,session1的查询返回在2个select语句中,和在1个select语句中.
  • 根据Oracle默认的事务隔离级别为read committed,此时会产生不可重复读或幻影读,当session1在读取表t1记录r1过程中,session2有表t1记录r1的增,删,改的DML操作,只要session2有提交,当session1再次读取表t1的记录r1时都会在该session获取最新的数据,否则不会显示最新.此时,session1中的数据来自刚刚修改过的最新data buffer或者data buffer没有了则来自被更新过的最新的data file.
  • 另外,当session1进行的是一个很长的select查询,当查询开始读取r1后,session2对该表的最后一行r10000000进行了修改,并进行了提交,但当session1显示到r10000000记录时,虽然session2已经提交,但返回的还是r10000000修改之前的记录,保证数据在session1查询的那一刻一致.此时,session1的select查询数据会来自UNDO,并不是当前最新的已提交的数据.
完结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值