暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

oracle数据库性能优化之——latch

DBA学习笔记 2021-04-21
1682

本次主要讲解一下性能优化中latch中使用,latch分三次讲解,本次是第一次,主要是对lacth的基本的认知,如果您对我写的感兴趣,一定要让您的好朋友关注哦。

1、Oracle机制中拥有latch的目的

1)保证资源的串行访问:
      保护SGA的资源访问
      保护内存的分配

2)保证执行的串行化:
      保护关键资源的串行执行
      防止内存结构损

2、Lock和Lacth的区别

Lock 是可以长时间的,Latch 是非常短时间的。一般保护的是会话
Latch 是保护内存的,Lock 是保护数据库对象的 。

Lock分表级锁,行级锁,也可以分共享锁、独占锁,就是对比进行操作时进行锁定。
Latch是内存锁。比方说,一个数据块,被加载到内存中,当多个会话对该内存中的块进行争用时,使用的锁。

3、Latch 的争用

首先我把latch大致分为3个方向上的争用。

第一、高CPU占用可能会触发latch争用问题。
第二、Oracle期望latch被进程短暂的、简短的占用
第三、Latch争用的性能问题也可能并不是由于Latch 持有时间太长,而仅仅是因为获取Latch的请求太过频繁了。

4、latch视图:

v$latch_misses视图保存了latch失败在oracle内核代码中的区域信息。这些信息对于oracle support诊断latch等待事件会有帮助的.
SQL> desc v$latch_misses
名称                                                  是否为空? 类型
----------------------------------------------------- -------- ------------------------------------
PARENT_NAME                                  VARCHAR2(50) 
WHERE                                                 VARCHAR2(64)  
NWFAIL_COUNT                                    NUMBER
SLEEP_COUNT                                      NUMBER
WTR_SLP_COUNT                                 NUMBER
LONGHOLD_COUNT                              NUMBER
LOCATION                                              VARCHAR2(64)


1)WTR_SLP_COUNT:字段记录进程在此内核位置等待者请求对应latch时的休眠次数.就像我持有一个短期的latch(0.08秒),但是并发很多,有1000多个进程想获取该latch,他们身份是等待者,会进入休眠。


2)SLEEP_COUNT:字段记录进程在此内核位置获取锁的这个获得者休眠的次数.这个是已经获取了该latch,但是之前再该latch的位置休眠过几次。


3)LONGHOLD_COUNT:字段记录因为一个latch在整个spin循环后仍然被其他进程hold,该进程转入sleep的次数,这是我们常规的休眠次数。
其实就是整个latch在spin循环中进入休眠的次数。

v$latch_misses中的数据可以查看任何latch争用问题。

4、示例:我们在共享池的两个latch经常出现这样,或者那样的故障问题,

shared pool latch与library cache latch;我来简单帮大家介绍下吧:

   

    Shared pool latch争用通常是由于硬分析引起,硬分析需要分配新的游标。硬分析过多说明sql语句没有充分绑定变量。硬分析是代价十分昂贵的操作,硬分析需要申请空闲列表(list of free chunks),分配空间时一直持有shared pool latch。

     如果频繁的申请空闲空间,必然导致shared pool latch的冲突,而在分析期间需要一直持有ibrary cache latch。 硬分析需要分配新的游标,或者将已经换出的游标重新装载,在整个分析阶段都需要持有library cache latch。
     





最后修改时间:2021-04-21 14:56:10
文章转载自DBA学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论