Oracle 表访问方式

1. 概述

               在oracle中有两种方式可以访问表里面的数据:

           1. 全表扫描:oracle服务器扫描这个表所有在高水位线(HWM)下面的数据块。

           2. 通过rowid访问:表中的每一行数据都有一个唯一标志位,叫做rowid,这样,当然我们就可以通过rowid来访问这一行数据。(oracle中索引正是通过rowid访问表中行数据的)


2. 全表扫描

           全表扫描方式,是扫描这个表在数据文件中的所有块。你可以一次读取多个块,这个是由参数db_file_mutiblock_read_count决定,默认是16. 当oracle按顺序全表扫描时,读取到的块放到buffer cache里面的LRU队列上面,从LRU队列最后面开始寻找空闲位置或者可以被替代的数据块。但是如果是并行扫描,这个块不会放在buffer cache里面,那么从磁盘读取之后,放到了PGA里面。(这个我也不是很明白,估计并行扫描会出现LRU队列的争用情况)

           全表扫描可以很有效率在获取很多行数据的时候(大约是在大于表数据10%的时候),否则,索引扫描更快。

            高水位线是这个表用的最后一个块的位置,如果很多行被删除了的话,高水位线也不会变。这样在高水位线下面即使有很多块没有数据,这些块依然会被读取。(当你发现表里面没有几行数据,访问速度依然缓慢的时候,需要考虑高水位线的问题了)


3. 通过rowid访问

         通常,我们不会直接提供rowid给数据库,让它通过rowid来访问数据。我们一般是在通过索引获取数据的时候,oracle内部会自动转换成rowid来访问数据。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值