iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >library cache相关知识点有哪些
  • 599
分享到

library cache相关知识点有哪些

2024-04-02 19:04:59 599人浏览 薄情痞子
摘要

library cache相关知识点有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。共享游标sql首次解析后会生成父游标和1个子游标(

library cache相关知识点有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

共享游标
sql首次解析后会生成父游标和1个子游标(DDL除外),其可共享的部分包括解析树,执行计划,绑定变量和sql文本等;
父游标主要保存游标名即sql text,文本一致的sql即可共享;
子游标保存剩余信息,只有当执行计划/绑定变量/环境变量(NLS & optimization mode)/实际引用对象一致时才可共享,否则新建1个子游标;


硬解析:没有可重用的共享游标,仅仅共享父游标也是硬解析;
软解析:重用父游标和子游标;
软软解析:缓存PGA中关闭的session cursor,相比软解析省去了游标open/close,同时可快速定位library cache中的共享游标;仅供当前session使用;


游标的生命周期
正常情况为open – parse – bind – execute – fetch - close
而应用据此可分4种类型
1 不使用绑定变量
 每次执行都经历一遍open/close,游标不可重用,每次都进行硬解析;设置cursor_sharing=force/similar可使用软解析;
2 使用绑定变量
 每次执行都经历一遍open/close,游标可重用,后续执行进行软解析;设置session_cached_cursors可使用软软解析,而且避免每次都open/close游标;
3 open once + parse-bind-execute-fetch loop + close once
 开启HOLD_CURSOR=NO & RELEASE_CURSOR=NO选项的oracle precompilers采用此种应用;每次都执行软解析,但避免了频繁的开关游标;
4 open once + parse + bind + execute-fetch loop + close once
 设计良好的OCI或precompiler可能采用此应用;设置cursor_space_for_time=true可提升性能(11g废弃)


如何优化软解析
V$statname中的session cursor cache hits/session cursor cache count/parse count (total)分别代表会话游标缓存命中次数/缓存总数/解析总数,当hits/total比例很低时说明软解析很严重,而软解析同样需要library cache latch;
1 服务器: 调整session_cache_cursor
2 应用: 改写pl/sql,采用上述第4种类型的应用


Library cache
由KGL管理,采用哈希表结构,每个bucket由handle链表组成,每个handle包含一系列heap,其指向heap 0;
 

library cache相关知识点有哪些


Handle存储有对象名/命名空间/标志位
 

library cache相关知识点有哪些

library cache相关知识点有哪些
 


Lock & Pin
作用
Library cache lock manages concurrency between processes, whereas library cache pin manages cache coherence。
In order to access an object in library cache, a process must first lock the library cache object handle, and then pin the object data heap itself.
Acquiring a library cache lock is also the only way to locate an object in cache—a process locates and locks an object in a single operation.
If the process wants to actually examine or modify the object, then it must acquire a library cache pin on the object data heap itself (after acquiring a library cache lock on the library cache object handle.
lock保护handle pin保护heap,要想访问library cache中的对象必须先后获取lock和pin;
10202采用mutex替换了针对cursor的library cache pin;


模式
Library cache lock和pin都是enqueue
lock分为S,X和null(cursor只能用null维护依赖一致性),pin只有S和X;
软解析使用S pin,硬解析使用X pin;无论硬解析还是软解析,cursor只是用null lock;可使用10049跟踪Http://www.dbsnake.net/library-cache-pin-and-lock-continue.html
关于pin,
An X request (3) will be blocked by any pins held S mode (2) on the object.
An S request (2) will be blocked by any X mode (3) pin held, or may queue behind some other X request.
X pin会让null lock失效,相应cursor必须重新解析方可再次运行,即如果对表作DDL相应游标都会失效,极容易爆发library cache pin等待;


pin和lock都是添加于handle之上的;

library cache相关知识点有哪些

Library cache latch:用于串行访问library cache中的对象;lock并非原子操作,上锁前后需要latch保护;
Library cache load lock latch/library cache load lock—对象不在内存时无法lock,此时需先加载;前者避免对象被多次加载,先获取前者直到load lock被分配,由后者负责将对象加载至内存;


library cache相关知识点有哪些 



找出blocker
select
       waiter.sid   waiter,
       waiter.event wevent,
       to_char(blocker_event.sid)||','||to_char(blocker_session.serial#) blocker,
       substr(decode(blocker_event.wait_time, 0, blocker_event.event,  'ON CPU'),1,30) bevent
from
       x$kglpn p,
       gv$session      blocker_session,
       gv$session_wait waiter,
       gv$session_wait blocker_event
where
          p.kglpnuse=blocker_session.saddr
   and p.kglpnhdl=waiter.p1raw
   and waiter.event in ( 'library cache pin' , 'library cache lock' , 'library cache load lock')
   and blocker_event.sid=blocker_session.sid
   and waiter.sid != blocker_event.sid
order by waiter.p1raw,waiter.sid;


select
       ash.session_id sid,
       ash.blocking_session bsid,
       nvl(o.object_name,to_char(CURRENT_OBJ#)) obj,
       o.object_type otype,
       CURRENT_FILE# filen,
       CURRENT_BLOCK# blockn,
       ash.SQL_ID,
       nvl(rc.name,to_char(ash.p3)) row_cache
from v$active_session_history ash, ( select cache#, parameter name from v$rowcache ) rc, all_objects o
where event='row cache lock'
   and rc.cache#(+)=ash.p1
   and o.object_id (+)= ash.CURRENT_OBJ#
   and ash.session_state='WAITING'
   and ash.sample_time > sysdate - &minutes/(60*24)
Order by sample_time;

关于library cache相关知识点有哪些问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: library cache相关知识点有哪些

本文链接: https://www.lsjlt.com/news/65961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • library cache相关知识点有哪些
    library cache相关知识点有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。共享游标Sql首次解析后会生成父游标和1个子游标(...
    99+
    2022-10-19
  • Spring Cache相关知识有哪些
    这篇文章将为大家详细讲解有关Spring Cache相关知识有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介 Spring 从 3.1 开始定义了 org.springframework...
    99+
    2023-06-15
  • HashMap相关知识点有哪些
    本篇内容介绍了“HashMap相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HashMap 和 HashSet 是 Java...
    99+
    2023-06-17
  • YARN相关知识点有哪些
    本篇内容介绍了“YARN相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!YARN产生背景为什么会产生YRAN?这个与MapRe...
    99+
    2023-06-19
  • Baseline相关知识点有哪些
    本篇内容主要讲解“Baseline相关知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Baseline相关知识点有哪些”吧! 在 Oracle Da...
    99+
    2022-10-19
  • CSS相关知识点有哪些
    本篇内容介绍了“CSS相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1、CSS选择器 ...
    99+
    2022-10-19
  • Git相关知识点有哪些
    这篇文章主要讲解了“Git相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Git相关知识点有哪些”吧!一、Git工作流程以上包括一些简单而常用...
    99+
    2022-10-19
  • MySQL相关知识点有哪些
    这篇文章主要介绍了MySQL相关知识点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 1、数据库架构1.1...
    99+
    2022-10-19
  • KeyDB的相关知识点有哪些
    今天小编给大家分享一下KeyDB的相关知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线程模型KeyDB将redi...
    99+
    2023-06-19
  • mysql binlog相关知识点有哪些
    本篇内容主要讲解“mysql binlog相关知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql binlog相关知识点有哪些”吧! ...
    99+
    2022-10-19
  • synchronized的相关知识点有哪些
    这篇文章主要讲解了“synchronized的相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“synchronized的相关知识点有哪些”吧!...
    99+
    2022-10-19
  • JVM相关的知识点有哪些
    这篇文章主要讲解了“JVM相关的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM相关的知识点有哪些”吧!JVM作为java运行的基础,很难相...
    99+
    2022-10-19
  • 有哪些Java的相关知识点
    这篇文章主要介绍“有哪些Java的相关知识点”,在日常操作中,相信很多人在有哪些Java的相关知识点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些Java的相关知识点”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-16
  • React的相关知识点有哪些
    这篇文章主要介绍“React的相关知识点有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React的相关知识点有哪些”文章能帮助大家解决问题。React与传统MVC的关系轻量级的视图层库!A J...
    99+
    2023-06-03
  • Git的相关知识点有哪些
    这篇文章主要介绍“Git的相关知识点有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Git的相关知识点有哪些”文章能帮助大家解决问题。分支和合并Git 跟其他版本控制系统***的优势就在于其高级...
    99+
    2023-06-17
  • java Shiro相关知识点有哪些
    这篇文章主要介绍了java Shiro相关知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java Shiro相关知识点有哪些文章都会有所收获,下面我们一起来看看吧。1.权限的管理1.1 什么是权限管...
    99+
    2023-07-06
  • AMM与ASMM相关知识点有哪些
    这篇文章主要讲解了“AMM与ASMM相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“AMM与ASMM相关知识点有哪些”吧!一、AMM相关知识:...
    99+
    2022-10-19
  • Oracle Cursor的相关知识点有哪些
    本篇内容介绍了“Oracle Cursor的相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2022-10-18
  • js函数相关知识点有哪些
    这篇文章将为大家详细讲解有关js函数相关知识点有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在js种函数实际上是对象,每个函数都是Function类型的实例。和其他...
    99+
    2022-10-19
  • Java中Volatile相关知识点有哪些
    这篇文章主要介绍“Java中Volatile相关知识点有哪些”,在日常操作中,相信很多人在Java中Volatile相关知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Volatile相关...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作