模拟row cache lock

87 篇文章 34 订阅 ¥39.90 ¥99.00
本文探讨了Oracle数据库中Row Cache Lock的概念,特别是在处理Sequence时的角色。当进程修改数据字典内容,如获取Sequence的nextval,需要获取Row Cache Lock。在高并发场景下,多个进程对同一Sequence调用nextval可能导致row cache lock争用,表现为row cache lock等待事件。通过实例展示了nocache Sequence如何触发这种等待,并提供了查询row cache lock相关信息的SQL语句。
摘要由CSDN通过智能技术生成
row cache lock

Oracle 将数据字典信息存于SGA内的行高速缓冲区(dictionary cache)行高速缓冲区位于共享池区域,可通过如下命令进行确认。

SQL> select pool,name,bytes from v$sgastat
  2  where name='row cache';

POOL	     NAME			     BYTES
------------ -------------------------- ----------
shared pool  row cache			   7511248

想要修改数据字典内容的进程,应对其相应的row cache object获得row cache lock.其中最具代表性的是Sequence,

在获取Sequence的nextval过程中需要修改数据字典信息时,应该对row cache object以SSX(Shared Sub-Exclusive)模式获得row cache lock.

SSX模式之间因为不存在共享性,所以多个进程同时对相同Sequence调用nextval时,发生对于row cache lock的争用。若在获取row cache lock过程中会发生争用,

则等待row cache lock事件。row cache lock事件的P1=cache#,表示的不是对象信息,而是row cache 的类型。


  row cache lock 不使用Enqueue结构,而通过row cache object信息内保存的锁拥有所有者列表和锁等待者列表,体现阻碍(blocking)机制。这些结构与

library cache lockÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值