zoukankan      html  css  js  c++  java
  • cache buffers chains latch

    cache buffers chains latch


    从 Oracle 8i Database 开始, 散列锁存器<-------(1:m)------>hash bucket<-------------(1:1)---------->hash chain


    1.每个逻辑读取需要一个latch get操作个一个CPU




    2.从latch get 例程中获得的唯一方法是获取锁存器




    3.在任意一个时刻,只有一个进程可以拥有cache buffers链,并且这个锁存器覆盖许多数据库,另一个进程可能需要其中一些数据块。


          为了使用高速缓冲区,要查询或修改Hash chain的进程必须获取管理响应Chain的Cache buffers chains latch.


    因为一个Cache buffers chains latch保护多个Hash Bucket。从Oracle 9i起,以只读为目的的查询Chain时,可以将cache buffers chains latch


    以Shared 模式共享,因此有助于减少争用。

    对于Shared 模式的cache buffers chains latch 有几个注意点:


    若能共享cache buffers chains latch,理论上不应该发生同时执行Select 操作引起cache buffers chains latch 争用。


    但是实际测试结果,同时执行Select操作依然会发生锁存器争用。


    其理由是与buffer lock相关。若为了读取工作,以Shared 模式已获得latch时,读取实际缓冲区过程中需要以Shared模式获取buffer lock,


    在此过程中需要部分修改缓冲区信息。因此在获取buffer lock过程中,需要将锁存器修改为Exclusive模式,在释放buffer lock期间也需要Exclusive模式


    获取锁存器。在此过程中因为发生了争用,所以要等待latch:cache buffers chains事件。
  • 相关阅读:
    MVC调用SVC无法找到资源解决问题
    动态更改iframe src
    http改成https wcf 配置更改
    Nuget 管理报repositories.config 访问路径被拒绝 解决办法
    如何在水晶报表中动态添加字段
    VS2.0控件之日历《Calendar》C#
    C#操作Excel全源码
    如何向水晶报表数据源中的存储过程传参数……
    公式的典型用途
    水晶报表公式使用必读
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/3797853.html
Copyright © 2011-2022 走看看