select的逻辑读的过程

select的逻辑读
逻辑读:=== db block gets +consistent gets

第一步:算出dba ---------------->找到DBA,5号文件,9509号块???????
第二步:根据第一步做hash运算。算出在哪个bucket上面,比如是100。
第三步:在hash table上找100号bucket(数组:初始值+offset)
第四步:在搜索cache buffer chain链表前会在100号bucket加一把独占的latch锁找到了bucket入口,在bucket上挂着BH(buffer head)
获取一此latch在10 负6次级别
desc v$latch_children
select name from v$latch_children;
第5步:在CBC latch保护下服务器进程去搜索cache buffer chain ,找BH.
第6步:如果在CBC上找到BH,在找到的BH上加上共享的buffer ping锁(中级队列所)
第7步:释放HASH latch锁
第8步:从BH中读到BA(BUFFER ADDRESS),通过BA找到我们的BUFFER cache中所要的buffer,开始逻辑读
第9步:逻辑读完成时,获取CBC latch
第10步:释放buffer ping锁
第11步:释放CBC latch


在整个逻辑读的过程中两个CBC latch ,一次 buffer pin?
为什么加独占的latch锁???
独占:是不是要去修改一个数据
共享:是不是要读取一个数据

转载于:https://www.cnblogs.com/evancao350/p/4055397.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值