简单理解Oracle中的latch

可以用一个小卖部抢购的例子来理解 Oracle 数据库中的 Latch:


 1、 什么是 Latch?
打个比方,假设数据库的某个内存区域(比如缓存的数据块)是小卖部货架上的最后一包辣条,Latch 就像是货架前的一个狭窄通道:

(1)只能一次过一人:通道非常窄,一次只能一个人通过去拿辣条,其他人必须排队。
(2)动作要快:拿辣条的人动作很急,拿完立刻离开通道(Latch 持有时间极短)。
(3)没有登记名字:如果多人抢,谁会抢到?规则很简单:拼命挤(比如「自旋」重复尝试)或者暂时放弃排队(等待)。
这就是 Latch 的核心作用:保护内存中的关键数据(比如缓存块、链表),避免被多个线程同时修改导致混乱。


 2、关键特点
(1)轻量级:Latch 占资源少,获取和释放极快(像生活中的插队,瞬间完成)。
(2)物理竞争:如果一群人同时抢一个 Latch(比如都想改同一个缓存块),数据库可能卡顿(类似通道堵住)。
(3)自旋 vs 睡眠:
自旋(Spin):线程原地疯狂尝试抢(反复挤通道),适合争抢时间短的情况。
睡眠(Sleep):暂时放弃排队,让出 CPU,适合争抢时间长的情况。


3、Latch 和 Lock(普通锁)的区别
保护对象:
Latch → 内存结构(比如缓存块、链表)。
Lock → 业务数据(比如表中的某一行)。
持续时间:
Latch → 极短(毫秒级)。
Lock → 可能长达事务结束。
管理方式:
Latch → 无队列,简单粗暴抢(挤通道)。
Lock → 有等待队列,公平排队。


 4、举个实际场景
假设多个用户同时修改同一张表的同一行数据:

(1)Oracle 需要先找到这行数据在内存中的位置(缓存块)。
(2)Latch 介入:此时需要短暂获取这个缓存块的 Latch,防止其他线程在读取/修改时出现数据错乱。
(3)Latch 被释放后,才能获取普通的行锁(Lock)继续操作。


5、如果 Latch 争抢严重?
就像一群人挤破头都要抢一个狭窄通道,结果可能是:

数据库性能下降(卡在“挤通道”上)。
通常会看到 latch: cache buffers chains、latch free 等待事件。
解决办法:优化 SQL(减少访问同一数据块)、调整内存参数、分散热点等。



总结:Latch 是 Oracle 内部的高并发“交通指挥员”,用最简单的规则保护内存数据,避免“踩踏事故”。

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

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

相关文章

全星FMEA软件系统是一款高效、智能的失效模式及影响分析工具,广泛应用于汽车、电子、机械等行业

全星FMEA软件系统是一款高效、智能的失效模式及影响分析工具,广泛应用于汽车、电子、机械等行业。该系统基于2019版FMEA手册开发,严格遵循七步方法,能够全面识别潜在风险并提前制定应对措施。 全星FMEA软件系统功能特点 自动化分析&#xff…

ROS的action通信——实现阶乘运算(一)

在ROS中除了常见的话题(topic)通信、服务(server)通信等方式,还有action通信这一方式,由于可以实时反馈任务完成情况,该通信方式被广泛运用于机器人导航等任务中。本文将通过三个小节的分享,实现基于action通信的阶乘运…

一文读懂什么是K8s Admission Controller

#作者:曹付江 文章目录 1、什么是 Admission Controllers?2、如何创建 Admission Controllers?3、Admission 控制器的最佳实践 K8s 中的操作与安全标准执行机制: 1、什么是 Admission Controllers? Admission contro…

vue3:vue3项目安装并引入Element-plus

一、安装Element-plus 1、安装语句位置 安装 | Element Plushttps://element-plus.org/zh-CN/guide/installation.html根据所需进行安装,这里使用npm包 2、找到项目位置 找到项目位置,在路径上输入cmd回车打开“运行”窗口 输入安装语句回车完成安装 …

【C/C++】理解C++内存与Linux虚拟地址空间的关系---带你通透C++中所有数据

每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 本质编写的原因是我在复习过程中突然发现虚拟地址空间和C内存划分我好想有点分不清时,进行查询各类资料和整理各类文章后得出的文章&#xff…

美国国防部(DoD)SysML v2迁移指南项目

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 分享一篇SysML v1向SysML v2迁移的资料。 下载地址:https://ndia.dtic.mil/wp-content/uploads/2023/systems/Thurs_1560710_Stirk.pdf 核心内容用DeepSeek整理如下&#…

在vscode中编译运行c语言文件,配置并运行OpenMP多线程并行程序设计

1.下载安装vscode Visual Studio Code - Code Editing. Redefined 2.安装vscode扩展 打开vscode,按ctrl+shift+x,打开扩展,搜索c/c++,下载相应的扩展 3.下载MinGW-w64 MinGW-w64 提供了 GNU 编译器集合,可以编译c/c++文件 这里下载见我的资源,可直接下载 把压缩包解压…

Jenkins protoc: command not found

个人博客地址:Jenkins protoc: command not found | 一张假钞的真实世界 在使用Jenkins编译Hadoop3.1.2时报错信息如下: [INFO] --- hadoop-maven-plugins:3.1.2:protoc (compile-protoc) hadoop-common --- [WARNING] [protoc, --version] failed: j…

Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机

Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机 前言一、使用命令行(nmcli 命令)配置网络,配置主机名第一步第二步修改主机名称 二、使用图形化界面(nmtui 命令)配…

【CMake 教程】基础使用教程(一)

一、准备 1. CMake 官方下载网址 2. 文件目录结构 MySimpleProject ├── CMakeLists.txt # CMake 配置文件 └── main.cpp # 主程序源码我们在 MySimpleProject 目录中创建 CMakeLists.txt 和 main.cpp 两个空白文件。 二、CMake 简单概念 要学会使用 CMake&#xff…

智能网络感知,打造极致流畅的鸿蒙原生版中国移动云盘图文体验

背景 中国移动云盘(原“和彩云网盘”)是中国移动重磅推出的安全、智能、不限速、移动用户免流的智能云盘,致力于成为5G时代用户个人与家庭的数字资产管理中心,是中国移动继语音、短信、流量后的“第四项基础服务”。 照片、音视…

Windows 11【1001问】Windows 11系统硬件配置要求

Windows 11 的设计目标是让用户更贴近自己喜欢的内容,在其发布之际,计算机在连接、创作以及游戏体验方面扮演了更加核心的角色。在设定 Windows 11 的最低系统要求时,我们依据三个关键原则来指导决策,以确保用户能够获得卓越的使用…

SQL笔记#函数、谓词、CASE表达式

目录 一、各种各样的函数 1、函数的种类 2、算术函数 ABS——绝对值 MOD——取余 ROUND——四舍五入 3、字符串函数 ||——拼接 LENGTH——字符串长度 LOWER——小写转换 REPLACE——字符串的替换 SUBSTR——字符串的截取 UPPER——大写转换 4、日期函数 CURRENT_DATE——…

为人工智能驱动的交通研究增强路面传感器数据采集

论文标题 英文标题:Enhancing Pavement Sensor Data Harvesting for AI-Driven Transportation Studies 中文标题:为人工智能驱动的交通研究增强路面传感器数据采集 作者信息 Manish Kumar Krishne Gowda Purdue University, 465 Northwestern Avenue,…

简讯:Rust 2024 edition and v1.85.0 已发布

详见 https://blog.rust-lang.org/2025/02/20/Rust-1.85.0.html 升级方法:rustup update stable

clickhouse-介绍、安装、数据类型、sql

1、介绍 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 OLAP(On-Line A…

pycharm技巧--鼠标滚轮放大或缩小 Pycharm 字体大小

1、鼠标滚轮调整字体 设置 Ctrl 鼠标滚轮调整字体大小 备注: 第一个是活动窗口,即缩放当前窗口 第二个是所有编辑器窗口,即缩放所有窗口的字体 2、插件 汉化包: Chinese Simplified 包

R语言安装教程(附安装包)R语言4.3.2版本安装教程

文章目录 前言一、安装包下载二、R-4.3.2安装步骤三、rtools43安装步骤四、RStudio安装步骤 前言 本教程将详细、全面地为你介绍在 Windows 系统下安装 R 语言 4.3.2 的具体步骤。无论你是初涉数据领域的新手,还是希望更新知识体系的专业人士,只要按照本…

从零开始玩转TensorFlow:小明的机器学习故事 5

图像识别的挑战 1 故事引入:小明的“图像识别”大赛 小明从学校里听说了一个有趣的比赛:“美食图像识别”。参赛者需要训练计算机,看一张食物照片(例如披萨、苹果、汉堡等),就能猜出这是什么食物。听起来…

01 冲突域和广播域的划分

目录 1、冲突域和广播域的划分 1.1、冲突域 1.2、广播域 1.3、对比总结 1.4、冲突域与广播域个数计算例题 2、交换机和路由器的结构 2.1、交换机的结构 2.2、路由器的结构 1、冲突域和广播域的划分 1.1、冲突域 冲突域是指网络中可能发生数据帧冲突的物理范围。当多…