db_block_gets和consistent_gets

db_block_gets:当前请求的块数量
  也称为current_mode,一般发生在dml(update,insert,delete)
  只读取当前时间点最新块的数据,当前时间点读到什么就是什么,不具备数据时间点一致性
  假定更新一个大表过程中,有一个进程修改了最后一条记录,当大表更新抵达的时候,会阻塞,
  若改进程修改提交,则大表更新会覆盖此更新(大表更新会在进程修改的基础上再修改)


consistent_gets:数据请求总数在回滚段buffer中的数据一致性所需要数据块数量
是oracle在查询开始的时候,所获得的数据必须是在时间点上一致的。
假定查询开始的时候所有数据都是已经提交的,查询开始之后,若数据发生了变化,
则查询需要去从回滚段中获得变化前的数据,而若数据没有发生变化,则不用去回滚段中读了。
不管是否去回滚段中读,在概念上来讲,这种数据获取方式都叫 consistent gets 。 
这仅仅表示一种期望,需要获得一致的时间点的数据,为此可能需要去回滚段中获得数据但并不表示一定从回滚段中的到数据

  也称为query_mode, 一般在查询时产生(select)
  
补充:
current mode 和query mode 只不过是2种相对的不同的叫法。对于select 来说,由于oracle 的读一致性特性,
在query mode 下,oracle 从buffer cache 中读到的数据必须是一致的,所以在query mode 下,oracle 可能或者不需要从undo 中读取数据,
所以在query mode 下,就是consistents gets,所以在select 中一般只有consistent gets 而没有db block gets 


而对于DML(insert,delete,update)操作,因为是修改数据就不需要什么一致性读了,就是直接在buffer cache 里面进行修改了,
所以叫做current mode ,就是当前读到什么数据就修改,不需要保证数据库的一致性,因为修改都要将数据进行修改,修改呢?
也是在buffer cache 中完成的,所以就叫做current mode ,为了和query 区别,对Buffer 的访问就叫做db block gets
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值