本文简单描述了一下enqueue的基本概念,结构和一些相关的参数,希望对于加深enqueue的理解有点帮助。
什么是enqueue
enqueue可以做名词,也可以做动词来解释。做名词时,指的的是一种锁的类型,比如Tx enqueue。做动词时,则是指将锁请求放入到请求队列的操作。
我们知道,lock是一种需要排队的锁实现机制,这和latch是不一样的,latch是一种轻量级的锁,是不需要排队得。Enqueue就是lock的排队机制的实现。
lock是用来实现对于共享资源的并发访问的。如果两个session请求的lock是兼容的,则可以同时锁定资源,如果两个session请求的lock是不兼容的,则其中一个session必须等待另外一个session释放其持有的lock后,才能获得对共享资源的锁定。这时,等待的session的lock请求就需要进入到一个队列当中,这就是enqueue等待。
Enqueue的模式
enqueue(lock)一共有六种模式:
1 NULL
2 SS
3 SX
4 S
5 SSX
6 X
什么是enqueue resource
Lock有三种可能的状态:已获得,转换或者等待。对于某一个lock,可能一些session已经获得该lock,某些session请求转换,也有某些session在请求持有但无法成功而导致等待。所以,对于一个lock,需要三个队列来描述这些session的状态。这个三个队列,分别称为Owner,waiter和convert队列,由一个结构来管理,就是enqueue resource。
enqueue是有名字的,其名字就是对应的lock的类型加上ID1,ID2参数构成,形如<TYPE-ID1-ID2>。Enqueue resource的结构,其头部是该enqueue的名字,然后就是指向三个队列的指针。
通过v$resource视图可以查看当前系统中的enqueue。
由于系统中有很多类型的lock同时存在,那么enqueue resource结构实际上是一个数组,其长度由隐含参数_enqueue_resources控制,也就是说,该参数控制了系统中可同时存在的lock的数量。如果超过,则会报以下错误:
ORA-00052: "maximum number of enqueue resources exceeded"
通过v$resource_limit视图可以查看系统中各种资源的利用情况。
什么是enqueue lock
enqueue lock就是lock本身。oracle使用了和enqueue reouserce分离的另外一个数组来管理enqueue lock,这个数组的长度由隐含参数_enqueue_locks控制。
通过视图v$enqueue_lock可以查看该数组中的具体内容。
什么是enqueue hash
通过上面关于enqueue resource的描述,我们可以知道,oracle查找一个lock时,需要先在enqueue resource数上查找到该lock的位置。
如果每次都在数组上顺序查找,显然效率较低。我们知道hash是一种高效的查找算法,所以oracle对于enqueue resource的查找也采用了hash方式,引入了一个hash数组,其大小由隐含参数_enqueue_hash控制。
通过对enqueue的名字<TYPE-ID1-ID2>进行hash计算,得到的结果就是某个enqueue resource在hash数组中的位置,也就是定位到了具体的hash bucket。如果多个enqueue resource的hash值相同,则在同一个bucket中形成一个链表。
相应的,为了保护这个hash数组,需要引入一个latch:enqueue hash chain。该latch有若干个子latch,由隐含参数_enqueue_hash_chain_latches控制
什么是enqueue freelist
同样的,对于enqueue resource数组中的空闲位置,需要通过一个freelist列表来管理,这样每次在请求新的位置时,不至于要扫描整个数组。enqueue freelist由enqueues latch的保护。
实际上,enqueue resource的Hash管理方式,和buffer cache/library cache的管理方式非常的相像。如果想更深入的了解enqueue hash,resource和lock,可以dump出具体的结果看看:
alter session set events ’immediate trace name enqueues level 3’;
分享到:
相关推荐
小议外汇期权会计在新规则中应用 本文主要探讨了小议外汇期权会计在新规则中的应用,涉及到外汇期权的概念、分类、确认、计量和披露等方面的知识点。 一、外汇期权的概念 外汇期权是一种金融衍生工具,允许持有人...
小议经济型酒店消费者心理及消费方向.doc
### 抖动算法小议——深入探讨多媒体技术中图像的抖动算法 #### 引言 在多媒体领域,尤其是在图像处理技术中,抖动算法扮演着至关重要的角色。本文旨在通过对抖动算法的深入解析,帮助读者理解其原理及其在灰度...
小议嵌入式计算机技术.pdf
法治思想起源小议.docx
小议食品安全问题.doc
小议人力资源外包.doc
小议“地摊经济”合集
小议“地摊经济”2020
【文章摘要】本文主要探讨了在新的形势下大额现金管理的重要性,特别是在反洗钱方面的挑战。通过对河南省近年来现金收支情况的分析,发现现金流量逐年增加,储蓄性收支占比大且呈上升趋势,同时现金交易在经济活动中...
小议如何培养班干部.doc
小议压力管道焊接质量控制
小议宪法规范的结构.docx
小议法国的刑法改革.pdf
小议休谟政治哲学.pdf
Izwdlg小议香港前世今生.pdf
小议勤奋的议论文.pdf
随着我国经济的快速发展,农业作为国家的基础产业,在国家经济体系中仍然占据着重要地位。党的十七大明确指出,发展现代农业和繁荣农村经济是当前的重要任务,农业产业化则被视为实现这一目标的关键路径。...
小议邮轮旅游发展方向.doc