共享池之三_librarycache结构librarycacheobject的结构_dumplibraryhandle

共享池之三_librarycache结构librarycacheobject的结构_dumplibraryhandle

ID:34518109

大小:189.38 KB

页数:12页

时间:2019-03-07

共享池之三_librarycache结构librarycacheobject的结构_dumplibraryhandle_第1页
共享池之三_librarycache结构librarycacheobject的结构_dumplibraryhandle_第2页
共享池之三_librarycache结构librarycacheobject的结构_dumplibraryhandle_第3页
共享池之三_librarycache结构librarycacheobject的结构_dumplibraryhandle_第4页
共享池之三_librarycache结构librarycacheobject的结构_dumplibraryhandle_第5页
资源描述:

《共享池之三_librarycache结构librarycacheobject的结构_dumplibraryhandle》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、范文范例指导参考sharedpool之三:librarycache结构/librarycacheobject的结构-dumpLibraryHandleLibrarycache结构Librarycache最主要的功能就是存放用户提交的SQL语句,SQL语句相关的解析树(解析树也就是对SQL语句中所涉及到的所有对象的展现)--->共享SQL区(sharedSQLareas),私有SQL区(privateSQLareas,如果配置了共享服务器),执行计划,用户提交的PL/SQL程序块(包括匿名程序块,存储过程,包,函数等)以及它们转换后能

2、够被Oracle执行的代码等,为了对这些内存结构进行管理,librarycache中还存放了很多控制结构,包括lock,pin,dependencytable,11G中的mutex等。Librarycache需要解决三个问题:(1).快速定位的问题:Librarycache中对象众多,Oracle如何管理这些对象,以便服务进程可以迅速找到他们需要的信息。比如某个服务进程需要迅速定位某个SQL是否存在于Librarycache中。---Oracle利用hashtable结构来解决librarycache中快速定位的问题(2).关系依赖

3、的问题:Librarycache中的对象存在复杂的依赖关系,当某个objec失效时,可以迅速将依赖其的对象也置为失效状态。比如某个表发生了结构变化,依赖其的SQL语句需要重新解析。---LCO中dependencytable(3).并发控制的问题:Librarycache中必须有一个并发控制的机构,比如锁机制,来管理大量共享对象的并发访问和修改的问题,比如某个SQL在重新编译的同时,其所依赖的对象不能被修改。----LATCHLOCKPIN学习资料整理分享范文范例指导参考Librarycache由一个hash表组成,hash表是由h

4、ashbuckets组成的数组。每个hashbucket都是包含librarycachehandle的一个双向链表。librarycachehandle指向librarycacheobject和一个引用列表。librarycache对象进一步分为:依赖表、子表、授权表等同一个SQL语句,HASH值相同,放在同一个librarycachehandle--如绑定变量,是用同一个librarycachehandle下不同的的子游标。不同的SQL语句,HASH值相同放在同一hashbucket的不同librarycachehandle。Ha

5、sh算法Oracle在内部管理中大量的使用到了hash,使用hash的目的就是为了快速查找和定位.对数值进行hash运算,产生一个索引号,然后根据索引号将数值放置到相应的hashbucket中去.根据hash运算的法则,会产生多个索引号,每一个索引号对应一个hashbucket(一个数值列).在寻找数值的时候,将搜寻的数值进行hash,产生一个索引号,那么这个数值一定在这个索引号对应的hashbucket中,于是直接跳转到这个hashbucket中进行遍历。这样在定位数据的时候,就能够大大的减少遍历的数量。学习资料整理分享范文范例指

6、导参考hashbucket:库缓存中就是使用hashbucket来管理的1、首先根据shared_pool_size指定的尺寸来自动计算hashbucket的个数2、每个hashbucket后面都串联着多个句柄   句柄描述了librarycache里面的对象的一些属性,包括名称、标记、指向对象所处的内存地址的指针librarycachehandle:-----OBJECTHandle 一个handle管理着一个librarycacheobject,handle对LCO起到指针作用。Librarycache中所有对象的访问是通过利用

7、librarycachehandle来实现的当一个进程请求librarycacheobject,librarycachemanager就会应用一个hash算法,从而得到一个hash值,根据相应的hash值到相应的hashbucket中去寻找。 如果librarycacheobject在内存中,那么这个librarycachehandle就会被找到。有时候,当sharedpool不够大,librarycachehandle会保留在内存中,然而librarycacheheap由于内存不足被ageout,这个时候我们请求的objecthe

8、ap就会被重载。最坏的情况下,librarycachehandle在内存中没有找到,这个时候就必须分配一个新的librarycachehandle学习资料整理分享范文范例指导参考,同时objectheap也会被加载到内存中。#####

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。