123
返回列表 发新帖
楼主: chandler_1983

[精华] 请问library cache pin和library cache lock是latch吗

[复制链接]
论坛徽章:
38
2010新春纪念徽章
日期:2010-01-04 08:33:082012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25版主2段
日期:2012-05-15 15:24:11优秀写手
日期:2013-12-18 09:29:08马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
21#
发表于 2008-6-24 16:44 | 只看该作者
我也是这个意思,lock 和 Pin 都是锁和操作的混合,可以说锁里面包含操作,也可以说操作里面包含锁,但是他们和普通的队列锁不一样。
不是单纯的锁.单他们肯定具有锁的功能.就好象Pin 进程有可能去Pin一个并不存在的内存,这就要引发加载操作,
就好象要去锁一个门,但这个门可能并不存在,还要先去引发'建立门' 这样的操作.
而普通的队列锁,在锁一个门时,这个'门' 通常都是固定的,存在的.
因此,lock 和 Pin 他们有操作的成分在内,他们就需要闩的保护,因为闩的功能之一,就是串行 化 代码的执行.

使用道具 举报

回复
论坛徽章:
1
2009日食纪念
日期:2009-07-22 09:30:00
22#
发表于 2010-4-9 12:37 | 只看该作者

Library cache lock and ,lib cache pin,kglhandle

Hi,
  All.I was confused by the library cache concept for:libarary cache pin lock ,library cache pin,kglhandle ,and latch.
  In my opinion,libarary cache pin lock ,library cache pin is chlid unit of latch in the libaray cache,and the lock mode
  Yesterday,I do a test to prove library cache lock is in shared mode when being copiled,and then set to null,
  I found v$session_wait view has library cache cache wait event appear,and then when I do a log execution on a procedure,and in another session do an operation of renaming a reference  table,and then I captured library cache pin appear,so I proved than libarary cache pin appear when library cache lock is done,and protect the reference objects being pharsed,executed,copiled.
  Am I right?Please give me som suggestion.Thanks!

使用道具 举报

回复
论坛徽章:
1
2009日食纪念
日期:2009-07-22 09:30:00
23#
发表于 2010-4-10 21:57 | 只看该作者

lib cache lock,lib cache pin,

jj说的不错,个人觉得latch是串行的机制,willing to wait和immediate2种,
lib cache lock,lib cache pin都属于latch,
lib cache lcok是为了保护解析树(执行计划)完整性,也就是parent cursor,child cursor,namsspace ,heap组成的bucktes的完整性(buckets hash, 当其中一个对象变化将导致hash变化)
KGL handle是一组euqenue链表组,里面包含lib cache lock,lib cache pin
lib cache pin是对组成sql语句的parent cursor,child cursor中的object的pin,保证其解析树(执行计划)在调用的时候能够被valiate
lib cache lock 在获取的时候是shared mode,然后被设置为null,当lib cache lock对应的reference object被改变成为validate的时候,null就成为一个触发器,pin就产生了

使用道具 举报

回复
论坛徽章:
1
2009日食纪念
日期:2009-07-22 09:30:00
24#
发表于 2010-4-10 22:04 | 只看该作者

lib cache lock ,lib cache pin

Oracle reference有个先获取lib cache lock,然后lib cache pin 差不多也能解释了
其实个人感觉先是根据sql产生parent curosr,chlid cursor然后出现对应的sql_id(hash值),p cursor,chlid cursor,包含namspace,kgl hanle,kgl object
obejct是reference object(表,view etc),然后会产生解析树(生成执行计划).当用户获取sql的时候先从handle队列组中查找lib cache lock,lib cache pin状态(mode),然后判断是否可以获取,然后就是上面的,个人理解...

使用道具 举报

回复
论坛徽章:
5
2009新春纪念徽章
日期:2009-01-04 14:52:282010新春纪念徽章
日期:2010-01-04 08:33:08ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-10-08 14:53:15
25#
发表于 2011-12-2 00:54 | 只看该作者
学习了~!

使用道具 举报

回复
论坛徽章:
9
蜘蛛蛋
日期:2011-12-28 14:46:28ITPUB季度 技术新星
日期:2012-05-22 15:10:11蛋疼蛋
日期:2012-05-28 16:48:46蜘蛛蛋
日期:2012-05-28 16:54:09茶鸡蛋
日期:2012-05-28 17:27:32双黄蛋
日期:2012-05-28 17:45:17迷宫蛋
日期:2012-05-29 10:49:35蛋疼蛋
日期:2012-06-04 17:13:15优秀写手
日期:2013-12-18 09:29:11
26#
发表于 2011-12-15 13:24 | 只看该作者
晶晶小妹 发表于 2008-6-20 21:27
不是,Library cache pin是Oracle内部针对共享池的内存块的一种锁。
一些内存块合在一起存贮了一种对象。比 ...

学习!

使用道具 举报

回复
论坛徽章:
2
生肖徽章2007版:兔
日期:2011-01-20 12:58:492011新春纪念徽章
日期:2011-02-18 11:43:35
27#
发表于 2012-3-6 13:21 | 只看该作者
学习!

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2013-12-21 06:00:142014年新春福章
日期:2014-02-18 16:50:09马上有车
日期:2014-02-18 16:50:09
28#
发表于 2015-4-7 18:30 | 只看该作者
学习!!!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表