码迷,mamicode.com
首页 > 其他好文 > 详细

select的逻辑读的过程

时间:2014-10-28 00:27:09      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:des   文件   数据   on   ad   as   服务器   res   table   

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锁???
独占:是不是要去修改一个数据
共享:是不是要读取一个数据

select的逻辑读的过程

标签:des   文件   数据   on   ad   as   服务器   res   table   

原文地址:http://www.cnblogs.com/evancao350/p/4055397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!