Oracle数据库中的Library cache lock和pin介绍
Oracle数据库中的Library cache lock和pin介绍
- 库缓存锁与库缓存Pin
-
- 库缓存锁(Library cache lock)
- 库缓存钉(Library cache pin)
- 库缓存锁/钉存在的必要
- 库缓存加载锁(Library cache load lock)
-
- 库缓存pin与库加载锁的关联
- 如何减少库缓存资源争用
-
- 如何减少库缓存锁
- 如何减少库缓存Pin
- 如何减少库缓存加载锁
⭐️ 本文中使用到的术语翻译如下:
- 库缓存(Library cache)
- 库缓存锁(Library cache lock)
- 库缓存钉(Library cache pin)
- 库缓存加载锁(Library cache load lock)
- 闩锁(Latch)
- 互斥锁(Mutexes)
- 句柄(Handle)
- 对象(Object)
- 游标(Cursor)
库缓存锁与库缓存Pin
库缓存锁(Library cache lock)
库缓存锁用于控制库缓存(Library cache)客户端之间的并发。它通过获取对象句柄上的锁,以实现以下两种目的之一:
- 一个客户端可以阻止其他客户端访问同一对象。
- 客户端可以长时间维持一种依赖关系(例如,确保没有其他客户端能够修改该对象)。
获取此锁还可用于在库缓存中定位对象。
在解析或编译SQL或PL/SQL语句期间,会对所引用的数据库对象(表、视图、过程、函数、包、包体、触发器、索引、簇、同义词)获取库缓存锁。该锁会在解析或编译结束时释放。
游标(SQL和PL/SQL区域)、管道以及其他任何临时对象不使用库缓存锁。
库缓存锁对死锁不敏感,且其操