zoukankan      html  css  js  c++  java
  • latch介绍

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

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

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

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


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

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

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

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


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

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

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

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

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

    等待队列也越长。

  • 相关阅读:
    理解Python中的__init__和__new__
    Python内置数学函数
    Java实现邮箱验证
    Socket通信
    Jvm内存模型
    Java GC如何判断对象是否为垃圾
    ::符号
    替换特殊符号
    有意思的小知识
    有意思的小题目
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/3797933.html
Copyright © 2011-2022 走看看