library cache pin&lock (1)
本站文章除注明转载外,均为本站原创: 转载自love wife & love life ——Roger 本文链接地址: library cache pin&lock (1) 68049b45 关于library cache pin和library cache lock, 是一个让人比较疑惑的问题. 我这里主要是指的event, 首先来说下其原理: lock主要有三种模式: Null, share(2), Exclusive(3). 在读取访问对象时, 通常需要获取Null(空)模式以及share(共享)模式的锁定. 在修改对象时,需要获得Exclusive(排他)锁定. pin操作跟lock一样, 也有三种模式: Null, shared(2)和exclusive(3). 只读模式时获得shared pin, 修改模式获得和exclusive pin. 模式为shared(2)的pin会阻塞任何exclusive(3)的pin请求. 模式为shared(3)的pin也会阻塞任何exclusive(2)的pin请求. 所有的DDL都会对被处理的对象请求排他类型的lock和pin 当要对一个过程或者函数进行编译时,需要在library cache中pin该对象. 在pin该对象以前,需要获得该对象 handle的锁定,如果获取失败,就会产生library cache lock等待. 如果成功获取handle的lock,则继续在library cache中pin该对象, 如果pin对象失败, 则会产生library cache pin等待. 如果是存储过程或者函数,存在 library cache lock等待,则一定存在library [...]