library cache —— latch: library cache
来源:互联网 发布:做网络销售股票犯法吗 编辑:程序博客网 时间:2024/05/22 09:01
为了寻找空闲chunk,通过shared pool锁存器,实现保护扫描空闲列和分配适当chunk;为了执行sql,通过library cache锁存器,保护检索并管理高速缓冲区的所有工作。在获得library cache锁存器过程中,若发生争用,则等待latch: library cache事件。
library cache锁存器争用主要在如下情况下发生:
1、Hard Parsing或Soft Parsing过多时
shared pool锁存器争用主要是因Hard Parsing引起的空闲列检索;与此相同,library cache锁存器争用的最重要原因也是Hard Parsing。library cache锁存器争用比shared pool锁存器争用更严重。其理由是library cache锁存器争用在Soft Parsing时也会发生。
利用session_cached_cursors参数。如果此值已被设定,oracle就将已执行三次以上的sql cursor的信息保存到PGA内,所保存的信息是SQL文本和对于库高速缓冲区的指针值。用户请求执行sql时,oracle将确认PGA上是否存在其信息。若存在,则立即向SGA相应区域移动。因而,检索库高速缓冲区的时间将减少,相应的拥有library cache锁存器的时间也会随之减少。卓越的oracle专家 Thom as Kyte将这些session_cached_cursors功能称为“softer soft parsing”。softer soft parsing是减少Soft Parsing自身负担的Parsing方法。
2、Version count高时
假设,三名不同用户执行相同的sql语句。三个sql语句完全相同,所以具有相同的Hash值,因此被分配到相同Hash chain的相同句柄(handle)。但是emp表都是不同方案的表,所以实际上是不同的sql语句。这时,oracle将创建与文本相应的父LCO,底下创建三个子LCO管理每个sql信息。三个子LCO实际上存在与匿名列。因具有三个子LCO,所以v$sqlarea视图的version_count列值是与LCO数相同,其值是3。Version count高,意味着因子LCO检索,检索库高速缓冲区的时间延长,因此library cache锁存器争用可能增加。若在特定sql上发生许多library cache锁存器争用,则需要确认相应的sql的Version count。
3、SGA区域发生Page out时
共享池已经向磁盘Page Out的时候,对该区域发生扫描时,重新将磁盘内容读取到内存过程中(Page In)需要等待,因此对于library cache锁存器的等待时间可能增加。若latch: library cache等待高时,O/S上发生Swap现象,则发生Page Out引起的性能下降的概率较高。
虚拟内存运行原理
在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。
在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。
分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。
当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)。
注意
从Oracle10g开始,Oracle正在逐步用mutex取代library cache中的latch,cursor:pin S和cursor:pin X相当于share和exclusive类型的library cache pin,cursor:pin S wait on X则表示share方式正在等待exclusive锁定。
SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name like '%cursor%';NAME PARAMETER1 PARAMETER2 PARAMETER3------------------------------ --------------- --------------- ---------------cursor: mutex X idn value wherecursor: mutex S idn value wherecursor: pin X idn value wherecursor: pin S idn value wherecursor: pin S wait on X idn value where
- library cache —— latch: library cache
- library cache —— latch: shared pool
- latch:library cache
- library cache —— library cache pin、library cache lock
- library cache latch等待事件
- Library Cache Latch和Shared Pool Latch
- shared pool latch和library cache latch
- Oracle latch:library cache 导致 数据库挂起 故障
- 模拟软解析引发的latch: library cache
- oracle_Shared Pool优化和Library Cache Latch冲突优化
- library cache pin和library cache lock
- library cache lock和library cache pin
- 共享池之六:shared pool latch/ library cache latch /lock pin 简介
- latch: shared pool latch: library cache 诊断脚本(latchprofx.sql,latchprof.sql)
- 查看 library cache 命中率
- library cache pin
- library cache pin/lock
- oracle library cache 初识
- ORA-12505,TNS:listener does not currently know of SID given in connect descriptor
- #敏捷个人# 每日成长101,来和我一起成长吧
- 谈谈switch语句
- ls 与du 查看目录大小区别
- php模板引擎smarty的安装与使用
- library cache —— latch: library cache
- HDU 1079 博弈
- 七夕夜、离别,涵情经河岸
- netapp system administration
- UBIFS文件系统源码分析
- 找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad"
- SmsManager类发送短信
- 设置NSTextField行间距
- Exadata主要等待事件