读取oracle文件,4.1.1 读取Oracle文件

4.1.1  读取Oracle文件

一般来说,Oracle读取文件内数据的方式可分为物理读取与逻辑读取。

1. 物理读取

物理读取是将所需的数据从存储介质上读取到数据库高速缓冲区内,也就是当数据***次被读取到时,Oracle会先将其数据从数据文件所在的磁盘上读进数据库高速缓冲区中,并将这些数据放在LRU(Last Recently Used)里的MRU(Most Recently Used)端,当下次有需要时,此数据就可以直接从数据库高速缓冲区中读取或修改,而不必再耗费资源从磁盘上读取,如图4-3所示。

1de6c0ec731e6f5713d1992d9810fb58.png

图4-3  物理读取(一)由图4-3的示例显示,***次查询时必须执行物理读取,当再次查询时相关数据时就可以从数据库高速缓冲区中读取了,如图4-4所示。

97588cf936900dfdd9b7a47939ef1933.png

图4-4  物理读取(二)

提示

当新的数据需要读入数据库高速缓冲区内,而数据库高速缓冲区又没有足够的空间时,Oracle会根据LRU算法,将LRU 列表中LRU端的数据置换出去。当这些被置换出去的数据再次需要被读取时,就需要在重新从磁盘读出后,再次放入数据库高速缓冲区内,这就是LRU机制。

当发生全表扫描(Full Table Scan)时,Oracle并不会利用LRU机制将全表扫描数据放到LRU 列表的MRU端,而是直接放在LRU端,此目的是为了让全表扫描的数据尽快被移出。因为Oracle认为,全表扫描一般发生的频率较低,且全表扫描的数据大部分在以后都不会被经常使用到。但如果想将整个表放到数据库高速缓冲区中,可利以用Keep的方式将数据放到保留池中。

2. 逻辑读取

逻辑读取是从数据库高速缓冲区中读取数据块,按照读取数据块的模式不同,一般来说,逻辑读取可以分为即时读取(Current Read)和一致性读取(Consistent Read)。这两者***的区别在于数据的新旧之分,分别说明如下。

即时读取:在Oracle的数据库高速缓冲区内,任何时候都只会保留一份目前的数据;所谓的即时读取,就是读取目前***的数据,且通常发生在对数据进行修改与删除作业时。

一致性读取:相信大家都了解,Oracle是一个多用户的数据库系统,所以会发生当A用户开始会话,读取的数据还未读取完成之前,可能会有B用户会话修改A用户正在读取但尚未读取完的数据,这时,如果A用户会话读取到B用户会话修改后的数据,就会造成数据不一致的情况,这是相当严重的问题,而一致性读取就是为了保证数据的一致性,如图4-5与图4-6所示。为此,在数据库高速缓冲区中的数据块上,都会有***一次修改数据块时的SCN(System Change Number,系统修改号码)。如果一个事务(Transaction)需要修改数据块中的数据,会先在撤消段(Undo Segment,或称为Rollback Segment)中保存一份修改前数据和SCN的数据块,然后再更新数据库高速缓冲区中、数据块内的相关数据与其SCN,并标识其为脏(Dirty)数据。当其他用户会话读取数据块时,会先比较数据块上的SCN和自己的SCN,当数据块上的SCN小于等于本身的SCN时,则直接读取数据块上的数据;如果是大于本身的SCN,则会从撤消段中找出修改前的数据块并读取其数据。关于SCN的详细内容,请参阅第6.1节。

A用户会话所执行的相关信息如下:

9d2ec72a70771f1e60e546a6a1047bdb.png

图4-5  逻辑读取(一)B用户会话所执行的相关信息如下:

575088f3f9d33da625059a4b7d31d1ca.png

(点击查看大图)图4-6  逻辑读取(二)

提示

由以上示例可明显看出,当A用户查询数据时,B用户紧接着更新相同的数据,但A用户所看到的还是未修改前的数据,所以必须在B用户执行了提交指令后,A用户再次查询时,才会看到修改后的数据。

【责任编辑:book TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值