经常有人把latch造成的
等待事件误认为是lock造成的
阻塞,其实这是两个完全不同的概念。在性能优化上,如果能够区别开这两个因素引起的性能问题,将能极大地提高我们的性能分析判断能力。
Latch是oracle为了保护内存结构而发明出的一种资源,按照它保护的资源类型不同,可以把latch分成很多种。可以把latch理解为一种轻量级的锁,它不会造成阻塞,只会导致等待。这是两个截然不同的概念。
阻塞,是一种系统设计上的问题,而等待是一种系统资源争用的问题。
还可以参考java的阻塞和等待:
http://www.outflush.com/2014/07/difference-between-block-and-wait-in-java/
导致latch争用而等待的原因非常多,内存中很多资源都可能存在争用。下面介绍两类最常见的latch争用,他们都会导致数据库的性能下降,这是一个DBA在做数据库性能分析和优化时必须知道的知识:
(1) 共享池中的latch争用
(2) 数据缓冲池中的latch争用
3.1 共享池中的latch争用
共享池中如果存在大量的sql被反复分析,就会造成很大的latch争用和长时间的等待,
最常见到的现象是没有绑定变量。最常见的几种共享池里的latch是:
Select * from v$latchname where name like ‘library cache%’
Latch# name
157 library cache
158 library cache pin
159 library cache pin allocation
160 library cache load lock
在分析系统性能时,如果看到有library cache这样的latch争用,就可以断定是共享池出了问题,这种问题基本上是由sql语句导致的,比如没有绑定变量或者一些存储过程被反复分析。
3.2 数据缓冲池latch争用
访问频率非常高的数据块被称为热块(hot block),当很多用户一起访问某几个数据块时,就会导致一些latch争用。最常见的latch争用是:
(1) buffer 不适用waits
(2) cache buffer chain
这两个latch的争用分别发生在访问数据块的不同时刻。
当一个会话需要去访问一个内存块时,它首先要去一个像链表一样的结构去搜索这个数据块是否在内存中,当会话访问这个链表时需要获得一个latch,如果获取失败,将会产生latch cache buffer chain等待,导致这个等待的原因是访问相同数据块的会话太多或者这个列表太长。
当一个会话需要访问一个数据块,而这个数据块正在被另外一个用户从磁盘读取到内存中或者这个数据块正在被另一个会话修改时,当前的会话就需要等待,就会产生一个buffer busy waits等待。
产生这些latch争用的直接原因是太多的会话去访问相同的数据块导致热块问题,
造成热块的原因可能是数据库设置导致或者是重复执行的sql频繁访问一些相同数据块导致。
热块产生的原因不尽相同,按照数据块的类型,可以分为以下几种热块类型,不同的热块类型处理的方式都是不同的:
(1) 表数据块
(2) 索引数据块
(3) 索引根数据块
(4) 文件头数据块
分享到:
相关推荐
Latch free等待事件 Latch和lock的异同
第3章 latch和等待 44 3.1 共享池中的latch争用 45 .3.2 数据缓冲池latch争用 54 3.2.1 表数据块 54 3.2.2 索引数据块 59 3.2.3 索引根数据块 62 3.2.4 段头数据块 65 第4章 优化器 66 4.1 rbo基于规则的优化器 66 ...
Laravel开发-laravel-latch Laravel中的闩锁集成
- latch的大小通常在100-200B左右(取决于Oracle的版本和Oracle运行的平台)。 - latch封装在一个latch 状态对象的结构中(从Oracle 8.0开始)。 - latch可以驻留在固定的SGA(父latch)或共享池。 - latch可以被共享...
第3章 latch和等待 44 3.1 共享池中的latch争用 45 .3.2 数据缓冲池latch争用 54 3.2.1 表数据块 54 3.2.2 索引数据块 59 3.2.3 索引根数据块 62 3.2.4 段头数据块 65 第4章 优化器 66 4.1 rbo基于规则的优化器 66 ...
Oracle中的Latch和Lock.pdf
oracle动态性能表oracle动态性能表oracle动态性能表
帐户-ui-bootstrap-3-latch 一个将 Latch 服务与 Meteor 框架集成的软件包,让用户可以轻松保护自己的帐户。 这个包扩展了ian:accounts-ui-bootstrap-3包的不同模板,以在登录下拉菜单中添加 Latch 选项。 第一次...
Oracle性能诊断之——Latch free
select empno from rich778 where empno =451576 <br><br>Use cursor_sharing=force (sqlarea goes to this): <br> select empno from rich778 where empno =:SYS_B_0 <br><br>Oracle9i Enterprise Edition Release ...
ANSI ESD SP5.4.1-2017 For Latch-up Sensitivity Testing of CMOS B
Oracle Latch Contention
等待事件row cache lock,latch row cache objects处理过程
4 Bit Latch for pic 16f84a
oracle latch描述以及使用
所有latch参数及等待事件
一个将 Latch 服务与 Meteor 框架集成的软件包,让用户可以轻松保护自己的帐户。 这个包扩展了accounts-ui包的不同模板,以在登录下拉菜单中添加 Latch 选项。 第一次添加这个包时,会在下拉登录菜单上出现一个新的...
“内部原理与优化”,分别介绍了oracle 的索引分裂、tx 锁等待、闩锁原理、逻辑读写、隐含参数与latch 原理等的内部操作。 《oracle dba手记3:数据库性能优化与内部原理解析》的主要内容以原理分析、内部实践、故障...
有关oracle当中锁的描述,Latch和Lock的区别,挺不错的。