library cache lock和library cache pin区别总结
library cache lock | library cache pin | |
共同点 | 同属于数据字典锁,目的是为了: 1、保持数据字典的一致性 2、为事务提供一致的对象定义视图 | |
锁对象 | 是为了请求library cache对象句柄 | 是为了请求library cache数据heap |
先后关系 | 必须先期得到这个锁 | 必须在得到library cache lock之后才能获得这个锁 |
获取时间 | 在parse call阶段 | 在call execution阶段 |
用途 | 排他模式: 使用在父和子句柄上 共享模式: 使用在所有的依赖关系对象句柄上 NULL模式: 侦察不可用的状态 避免再次重新定位(不是太理解) | 共享模式: 1、读取数据的heaps 2、防止依赖对象不被修改 排他模式: 修改数据heaps |
锁的使用 | 1、这里说的对象句柄就是一个资源结构 2、锁结构被动态分配在共享池中 3、类型为LA。。LP | 1、这里说的对象句柄就是一个资源结构 2、锁结构被动态分配在共享池中 3、类型为NA。。NP |
X表 | X$KGLLK | X$KGLPN |
综述 | library cache lock也叫breakable parse lock,是用于控制在请求一个对象句柄锁的library cache的客户端之间的并发性。就是说这个锁就是防止其他的客户端访问同一个对象。这个所还能在library cache上定位一个对象。 | 这个library cache pin是管理cache的一致。pin一个对象能够造成一个heap载入到内存中,(这里有个疑问难道这个heap就不在内存吗?应该不在,这样这个heaps或许就可以理解为数据字典上的数据了),如果一个客户端修改或者检测一个对象,客户端必须先请求一个library cache lock到相关的句柄上,然后在pin合适的heap。 |
等待事件 | library cache lock | library cache pin |
等待周期3秒,PMON为1秒 | 等待周期3秒,PMON为1秒 | |
等待参数 | P1:对象句柄地址 P2:锁结构地址 P3:100*请求模式+namespace# | P1:对象句柄地址 P2:pin地址 P3:100*请求模式+namespace# |
很少,除了pipes和序列 |
数据字典锁还有一个类型是row cache locks。这个锁是对应row cache来说的
row cache用途:
1、存储的是数据字典上的行
2、是共享池的一部分
3、减少对于system表空间的物理IO次数
4、使用row cache lock来精确控制数据字典行上的锁
这里需要说明的是对于一个instance来说,都有一个隐含参数来确定row cache lock的多少,缺省为100。_ROW_CACHE_INSTANCE_LOCKS
这个锁也有一个等待事件与之对应:row cache lock
这个锁等待周期是3秒,等待1000次之后就会放弃。
P1:cache id这个与v$rowcache上的cache#相对应
P2:保持的模式
P3:请求的模式
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/222350/viewspace-925875/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/222350/viewspace-925875/