latch介绍

latch是一种锁,用来实现对Oracle所有共享数据结构的串行化访问。共享池就是这样一个例子,

这是系统全局区中一个庞大的共享数据结构,Oracle正是在这里存储已解析,已编译的SQL。

修改这个共享内存结构时,必须注意一次只允许一个进程访问。

(如果两个进程或线程试图同时更新内存中的相同的数据结构,这会很槽糕,会导致大量数据被破坏.)


所以,Oracle采用了一种lacth机制,这是一种完成串行化访问的轻量级锁定方法。

不要被"轻量级"这个词蒙住了,作为串行化设备,latch一次只允许访问一个进程。latch在硬解析实现中大量使用,

实际上,这也是latch最常见的方法。共享池的latch和库缓存的latch都是不折不扣的latch,它们成为

人们频繁争抢的目标。这说明,试图同时硬解析语句的用户越多,性能就会随时间变得越差。


人们执行的硬解析越多,对共享池的latch争用就越厉害,等待的队列越长,等待的时间也就越久。

硬解析更重要的因素是库缓存所用的latch机制,硬解析一个查询时,数据库会更长时间地

占用一种低级的串行化设备,称为latch.

这种latch用来保护Oracle共享内存中的数据结构不会同时被两个进程修改,而且如果有人正在修改数据结构,

则不允许另外的人再来读取。对这些数据结构加latch的时间越长,越频繁,排队等待latch的进程就越多,

等待队列也越长。

原文地址:https://www.cnblogs.com/zhaoyangjian724/p/3797933.html