`
beagoodboy
  • 浏览: 97022 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

行缓冲队列锁(Row Cache Lock Wait)

阅读更多
定义
运行DDL必须请求一个行缓冲锁(Row Cache Lock)来锁住数据字典(Data Dictionary)信息。共享池(Shared Pool)包含来自数据字典的的行缓冲区,以减少磁盘的IO访问,并允许对行进行加锁。数据字典行锁被叫做行缓冲队列锁(Row Cache Enqueue Locks)。这个队列锁结构从共享池中按需求分配,当这些请求在等待并超时,我们就看到了行缓冲队列锁。

分析
每一个行缓冲队列锁都对应一个特定的数据字典对象。这被叫做队列锁类型,并可以在v$rowcache视图中找到。在以下的示例中可以看到队列锁类型和数据字典缓冲中正在进行的操作。
SQL> select PARAMETER,COUNT,GETS,GETMISSES,MODIFICATIONS from v$rowcache;

PARAMETER                             COUNT       GETS  GETMISSES MODIFICATIONS
-------------------------------- ---------- ---------- ---------- -------------
dc_free_extents                           0          0          0             0
dc_used_extents                           0          0          0             0
dc_segments                             574      96847       9359         11403
dc_tablespaces                            8   40857590         11             0
dc_tablespace_quotas                      0       4073        401          4065
dc_files                                  0         14         14             0
dc_users                                 36    6573939         45            20
dc_rollback_segments                     49    5260997         68            31
dc_objects                              606    5074806       9549          7864
dc_global_oids                           19     427246        166             0
dc_constraints                           10       3430       1276          3430
dc_object_ids                           607    6548320       6408           583
dc_sequences                              1       1040        452          1040

常见队列锁类型
行缓冲队列锁等待的调优基于每一个队列锁类型的行为,其中常见的有:
DC_SEQUENCES:在使用序列的时候将发生该行缓冲队列锁。调优方式是检查序列是否指定了缓冲选项并确定这个缓冲值可以承受预期的并发insert操作。
DC_USED_EXTENTS和DC_FREE_EXTENTS:该行缓冲队列锁可能在空间管理碰到表空间分裂或者没有足够区大小时发生。调优方法是检查表空间是否分裂了、区大小是否太小或者表空间是人工管理。
DC_TABLESPACES:该行缓冲队列锁会在分配新区是发生。如果区大小设置得过小,程序将经常申请新区,这将导致冲突。调优方法是快速地增加区的数量。
DC_OBJECTS:该行缓冲队列锁会在重编译对象的时候发生。当对象编译时将申请一个排他锁阻塞其他行为。通过检查非法对象和依赖关系来调优。
DC_SEGMENTS:该行缓冲队列锁会在段分配的时候发生,观察持有这个队列锁的会话在做什么。

参考
Row Cache Lock Wait Understood
http://support.confio.com/blog/post/row-cache-lock-wait-understood/24/
Investigate ROW CACHE LOCK
http://surachartopun.com/2009/11/investigate-row-cache-lock.html

分享到:
评论

相关推荐

    双缓冲队列的设计与实现

    双缓冲队列的设计与实现,多线程,c语言实现,用于提高程序运行效率

    C#版服务端双缓冲队列

    双缓冲队列(Double Buffering Queue)则是在单一队列的基础上增加了一个额外的缓冲区,从而避免了频繁的锁竞争。在传统的单缓冲队列中,当生产者向队尾添加元素时,消费者可能正在从队头取出元素,这会导致两者必须...

    服务器端双缓冲队列s/c

    在IT行业中,服务器端双缓冲队列是一种优化数据处理效率的设计模式,特别是在高并发和实时性要求较高的场景下。双缓冲队列(Double Buffering Queue)借鉴了图形处理中的双缓冲技术,通过两个独立的数据缓冲区来提高...

    无锁缓冲队列

    无锁缓冲队列(也称为原子队列或lock-free queue)的设计目标是通过避免锁的使用来提高并发性能,减少竞争条件并降低死锁的风险。 在传统的同步队列实现中,例如基于锁的队列,当多个线程同时尝试访问队列时,通常...

    一个c++环形队列缓冲区

    ### 环形队列缓冲区的关键知识点 #### 一、环形缓冲区的基本概念与应用 环形缓冲区(Circular Buffer),又称循环队列,是一种高效的数据结构,在嵌入式系统、网络通信、多媒体处理等领域有着广泛的应用。它通过在...

    VxWorks操作系统下基于缓冲队列网络通信应用

    ### VxWorks操作系统下基于缓冲队列网络通信应用 #### 概述 VxWorks操作系统是一种广泛应用于嵌入式系统的实时操作系统(RTOS),以其高可靠性和强实时性著称。在许多工业自动化、航空航天及国防等领域都有广泛...

    C++数据结构与算法之双缓存队列实现方法详解

    C++数据结构与算法之双缓存队列实现方法详解 本文主要介绍了C++数据结构与算法之双缓存队列实现方法,结合实例形式分析了双缓存队列的原理、实现方法与相关注意事项。 知识点一:双缓存队列的定义 双缓存队列是一...

    高速缓冲存贮器(Cache)

    高速缓冲存贮器(Cache)是一种特殊的存储设备,它的设计目标是解决计算机系统中处理器(CPU)速度与主存储器(Main Memory)速度之间存在的显著差异问题。由于CPU的运算速度远超主存的访问速度,Cache的存在可以极...

    h264 环形缓冲队列 编解码

    本项目主要关注的是使用C++实现H264视频的解码,并采用环形缓冲队列来处理接收到的数据。下面将详细解释这些关键概念及其相关知识点。 一、H264编码 H264,又称为AVC(Advanced Video Coding),是一种高效的视频...

    CircleQueue_with_array_list.rar_c环形队列_环形缓冲区_环形队列_缓冲 队列

    在计算机科学中,环形队列广泛应用于操作系统中的缓冲区管理、多线程通信、网络数据包处理等场景。 在本程序"CircleQueue_with_array_list"中,环形队列的实现有两种方式:一种是基于数组,另一种是基于链表。这两...

    行业分类-设备装置-一种对缓冲队列并发执行读、写访问的方法和设备.zip

    在IT行业中,缓冲队列是数据处理和通信系统中的关键组件,它用于暂时存储数据,以便于优化数据传输和处理的效率。标题“行业分类-设备装置-一种对缓冲队列并发执行读、写访问的方法和设备”揭示了这个主题专注于在...

    串口缓冲区 循环队列

    循环队列作为一种高效的数据结构,在串口通信的缓冲区管理中扮演着重要角色。这里我们将深入探讨串口缓冲区的概念、循环队列的工作原理以及如何在STM32F103ZET6微控制器上应用这些技术。 串口缓冲区是用于存储串口...

    C语言实现基于数组的环形缓冲队列 ,通过图文简单介绍了缓存的写入和读出,并给出示例代码

    C 语言实现基于数组的环形缓冲队列 环形缓冲队列(Circular Buffer Queue)是一种常见的数据结构,尤其在处理实时系统、并发程序或通信协议中被广泛使用。它利用数组作为底层存储,通过两个指针分别表示数据的读取...

    STC15W4K16S4的串口通信(环形队列缓冲区)

    本文将详细讲解如何在STC15W4K16S4上实现串口通信,并使用环形队列作为缓冲区,提高通信效率和稳定性。 串口通信的基础是UART(通用异步收发传输器),它采用串行通信协议,通常包括发送数据线和接收数据线。在STC...

    可编程路由器中基于缓冲队列长度阈值的处理器调度.pdf

    在路由器中,数据包会存储在缓冲区中等待处理,缓冲队列长度是衡量处理需求的一个关键指标。当队列长度超过特定阈值时,该算法将调整处理器的调度策略,以满足不同流量类型的需求。这种算法旨在平衡尽力服务(Best-...

    清除打印队列命令

    清楚打印队列命令 不用重启即可解决打印机 需有管理员权限

    VxWorks下基于缓冲队列的网络通信

    VxWorks下基于缓冲队列的网络通信 VxWorks是美国风河(Wind River Systems)公司开发的一套具有微内核、可裁减的高性能实时操作系统,适用于当下所有流行的目标 CPU平台,支持广泛的网络通信协议,为开发者提供了...

    操作系统-缓冲池的模拟使用

    - **空缓冲队列(EMQ)**:初始状态下,所有缓冲区都位于此队列中,当有数据需要读取或写入时,系统会从此队列中取出缓冲区,分配给输入或输出队列使用。 - **输入缓冲队列(INQ)**:用于存储从外部设备读取的、...

    基于环形缓冲队列实现按键长短组合检测.rar

    1.原创教学视频,基于FIFO(环形缓冲队列)对按键数据进行保存。 2.定时器每隔10ms扫描按键,将按键状态存储再环形队列中,从而实现对按键长短检测,组合按键。 3.创作不易,有问题联系作者本人274688376

    基于Spring Boot、Elasticsearch、Kafka及缓冲队列的日志收集系统设计源码

    该项目是一款基于Spring Boot框架,融合Elasticsearch、Kafka及缓冲队列技术的日志收集系统源码。该系统采用Java语言开发,辅以CSS、JavaScript和HTML进行界面设计,共包含37个文件,其中Java文件19个,图片文件3个...

Global site tag (gtag.js) - Google Analytics