enqueue:oracle锁机制

实现锁的方式就是排队咯,那么排队就是有enqueue这么个结构来管理 管理锁的结构叫队列,即enqueue
所有和enqueue相关的函数都叫KSQ-- kernal service enqueue

lock是从应用层面看到的锁,enqueue是oracle内部管理锁的一个结构。
可以用v$lock_type这个视图的type和description字段去看AWR中看到的锁类型和解释,也可以去看看这些锁的id1_tag和id2_tag是啥意思
锁描述可以忽略,咱们看锁模式就可以
在数据库里是1-6级,dump出来的就是0-5级
锁与锁之间可以共享资源的表格(红色的表示持有者,黄色的表示申请者)

在这里插入图片描述
比如有个用户在一个对象资源上持有4级锁(S),另一个用户如果申请1级2级和4级锁则都可以共享,别的就不允许了。

下面通过一个流程来解释
在这里插入图片描述
首先有一个TM-432-0的锁资源,有个S1的会话在这个上面持有一个S锁,这个时候S2会话想在这个锁资源上申请一个X锁,由于4级锁和6级锁不共享,因此S2会话只能在waiters队列等待,然后S1的会话这个时候做完了S锁的事务想升级成X锁,就会在converters队列做一个升级,在S1会话的S锁释放后,converters队列S1的X锁就会立马被owners列通知去持有TM-432-0的锁资源(因为oracle一定是先扫描convert队列,在扫描waiter,此时S1的S锁已经升级成了X锁,并且只有X锁了,原来的S锁已经没了),这个时候S3和S4的会话也想在持有S锁,但是由于被S2的X锁申请给堵塞了,所以只能在waiters队列等待。
在S1的X锁也释放后,oracle去扫描converters队列发现是空的,就去waiters队列里扫描,把排在第一个的S2会话的X锁持有TM-432-0的锁资源,在等到S2会话X锁释放后,owners列就会去通知S3和S4去持有S锁(因为4级锁和4级锁可以共享,此时这个锁资源就会有两个owner)。
在上述过程中产生的等待叫做enq等待,比如enq:TM contention,enq:TX contention

下面通过一个实验来验证:

session1:
SQL> conn test/oracle
Connected.
SQL> LOCK TABLE test IN SHARE MODE;
Table(s) Locked.session2:
SQL> conn test/oracle
Connected.
SQL> LOCK TABLE test IN EXCLUSIVE MODE;
...(此时在等待)session3和session4:
LOCK TABLE test IN SHARE MODE;
...(在等待S2的X锁)session1(S锁convert成X锁)SQL> LOCK TABLE test IN EXCLUSIVE MODE;Table(s) Locked.session1发起commit或者rollback命令释放锁资源,session2发现就立刻持有了X锁:
s1:
SQL> commit;Commit complete.
s2:
SQL> LOCK TABLE test IN EXCLUSIVE MODE;Table(s) Locked.session2释放X锁,session3和session4一起持有了S锁:
s2:
SQL> commit;Commit complete.
s3,s4:
SQL> LOCK TABLE test IN SHARE MODE;Table(s) Locked.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/790552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的超声波测距仪设计_kaic

摘 要 如今社会持续深化转型,在人工智能领域,传感器采集外部数据,经过处理器对数 据运算和处理,从而实现相应的功能。比如自动驾驶技术中,超声波传感器应用广泛, 超声波是一种频率在 20khz 以上的声波&…

OpenHarmony实战:小型系统移植概述

驱动主要包含两部分,平台驱动和器件驱动。平台驱动主要包括通常在SOC内的GPIO、I2C、SPI等;器件驱动则主要包含通常在SOC外的器件,如 LCD、TP、WLAN等 图1 OpenHarmony 驱动分类 HDF驱动被设计为可以跨OS使用的驱动程序,HDF驱动框…

【WebKit架构讲解】

🌈个人主页:程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

Nginx从安装到高可用实用教程!

一、Nginx安装 1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本 2、上传nginx到linux系统 3、安装依赖环境 (1)安装gcc环境 yum install gcc-c(2)安装PCRE库,用于解析正则表达式 yum install -y pcre pcre-devel(3)zlib压缩和解压缩…

解决el-table设置固定高度后,展示不同列时表格高度变小bug

解决el-table设置固定高度后,展示不同列时表格高度变小bug 1、需求分析2、解决方案 1、需求分析 在el-table使用过程中,选择多个参数展示更多列时会出现高度变小问题究其原因可知是el-table列动态发生变化后,el-table__body-wrapper的高度变…

CNAS软件测试公司有什么好处?如何选择靠谱的软件测试公司?

CNAS认可是中国合格评定国家认可委员会的英文缩写,由国家认证认可监督管理委员会批准设立并授权的国家认可机构,统一负责对认证机构、实验室和检验机构等相关机构的认可工作。 在软件测试行业,CNAS认可具有重要意义。它标志着一个软件测试公…

2024阿里云老用户服务器优惠价格99元和199元

阿里云服务器租用价格表2024年最新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元,ECS u1服务器2核4G5M固定带宽199元一年,2核4G4M带宽轻量服务器一年165元12个月,2核…

基于Unet的BraTS 3d 脑肿瘤医学图像分割,从nii.gz文件中切分出2D图片数据

1、前言 3D图像分割一直是医疗领域的难题,在这方面nnunet已经成为了标杆,不过nnunet教程较少,本人之前跑了好久,一直目录报错、格式报错,反正哪里都是报错等等。并且,nnunet对于硬件的要求很高&#xff0c…

mac、windows 电脑安装使用多个版本的node

我们为啥要安装多个不同版本的node? 开发旧项目时,使用低版本Nodejs。开发新项目时,需使用高版本Node.js。可使用n同时安装多个版本Node.js,并切换到指定版本Node.js。 mac电脑安装 一、全局安装 npm install -g n 二、mac电脑…

Elasticsearch 压测实践总结

背景 搜索、ES运维场景离不开压力测试。 1.宿主机层面变更:参数调优 & 配置调整 & 硬件升级2.集群层面变更:参数调优3.索引层面变更:mapping调整 当然还有使用层面变更,使用API调优(不属于该文章的讨论范围…

四川古力未来科技抖音小店:安全便捷,购物新体验

在数字化浪潮席卷全球的今天,电商平台的安全性与便捷性成为了消费者最为关心的问题。四川古力未来科技有限公司,凭借其强大的技术实力和深厚的行业经验,为广大消费者带来了一个安全可靠的购物新选择——古力未来科技抖音小店。 古力未来科技抖…

Twitter Api查询用户粉丝列表

如果大家为了获取实现方式代码的话可能要让大家失望了,这边文章主要是为了节省大家开发时间,少点坑。https://api.twitter.com/2/users/:id/followers ,这个接口很熟悉吧,他是推特提供的获取用户关注者(粉丝&#xff0…

基于AI智能识别技术的智慧展览馆视频监管方案设计

一、建设背景 随着科技的不断进步和社会安全需求的日益增长,展览馆作为展示文化、艺术和科技成果的重要场所,其安全监控系统的智能化升级已成为当务之急。为此,旭帆科技(TSINGSEE青犀)基于视频智能分析技术推出了展览…

再拓信创生态圈|宁盾身份域管与深信服桌面云完成兼容互认证

近日,宁盾国产化身份域管(即身份目录服务软件)与深信服桌面云系统aDesk完成产品兼容性互认证。经过共同严格测试,宁盾国产化身份域管能够与深信服桌面云系统兼容对接运行,双方相互兼容,共同为企事业单位提供…

H5面临的网络安全威胁和防范措施

H5,是基于HTML5技术的网页文件。HTML,全称Hyper Text Markup Language,即超文本标记语言,由Web的发明者Tim Berners-Lee与同事Daniel W. Connolly共同创立。作为SGML的一种应用,HTML编写的超文本文档能够独立于各种操作…

tomcat-连接器架构设计

一、NioEndpoint组件 Tomcat的NioEndPoint组件实现了I/O多路复用模型,接下来我会介绍NioEndpoint的实现原理。 1.总体工作流程 我们知道,对于Java的多路复用器的使用,无非是两步: 1.创建一个Seletor,在它身上注册各…

Cloud flare反向代理流量实验

前言 本实验将会为大家解析cloud flare的反向解析代理服务如何搭建,works如何创建等等。本文中教学创建的实例已在文章编写结束后释放,该项技术不可用于违法用途!违者自行承担后果!! 原理拓扑图 一、知识链条 1、Clou…

【深度学习|Pytorch】torchvision.datasets.ImageFolder详解

ImageFolder详解 1、数据准备2、ImageFolder类的定义transforms.ToTensor()解析 3、ImageFolder返回对象 1、数据准备 创建一个文件夹,比如叫dataset,将cat和dog文件夹都放在dataset文件夹路径下: 2、ImageFolder类的定义 class ImageFol…

目标跟踪——行人车辆数据集

一、重要性及意义 首先,目标跟踪对于个人和组织的目标实现至关重要。无论是个人职业发展、企业业务增长还是政府的社会发展,目标跟踪都能够帮助我们明确目标,并将其分解为可行的步骤和时间表。这有助于我们保持动力和专注,提高效…

数据质量决定大模型能力,景联文科技提供高质量大模型数据

随着大模型的深入发展,各类资源要素的配置状态已悄然变化。其中,数据的价值已被提升到一个新高度。 大模型往往拥有庞大的参数和复杂的网络结构,需要大量的数据来学习和优化。数据的质量和数量直接决定了模型的训练效果。若数据不足或质量不佳…