DELETE/ UPDATE/ INSERT 语句会自动加锁

在数据库系统中,DELETEUPDATE 和 INSERT 语句通常会自动加锁,以确保数据的一致性和并发控制。具体的锁类型和效果取决于数据库的实现(如 MySQL、PostgreSQL 等)以及事务的隔离级别。以下是这些操作通常加锁的行为和效果:


1. DELETE 语句

  • 加锁类型

    • 行级锁DELETE 会对要删除的行加锁,通常是 排他锁(X锁)

    • 间隙锁(Gap Lock):在某些隔离级别(如 MySQL 的 REPEATABLE READ),DELETE 还可能对索引间隙加锁,防止其他事务插入新数据。

  • 效果

    • 其他事务无法对被删除的行加锁或修改,直到当前事务提交或回滚。

    • 如果使用了间隙锁,其他事务也无法在锁定范围内插入新数据。


2. UPDATE 语句

  • 加锁类型

    • 行级锁UPDATE 会对要修改的行加锁,通常是 排他锁(X锁)

    • 间隙锁(Gap Lock):在某些隔离级别下,UPDATE 也可能对索引间隙加锁,防止其他事务插入新数据。

  • 效果

    • 其他事务无法对被修改的行加锁或修改,直到当前事务提交或回滚。

    • 如果使用了间隙锁,其他事务也无法在锁定范围内插入新数据。


3. INSERT 语句

  • 加锁类型

    • 行级锁INSERT 会对新插入的行加锁,通常是 排他锁(X锁)

    • 插入意向锁(Insert Intention Lock):在插入数据时,数据库会对插入的位置加插入意向锁,表示有事务准备在此处插入数据。

  • 效果

    • 其他事务无法对新插入的行加锁或修改,直到当前事务提交或回滚。

    • 插入意向锁不会阻塞其他事务的插入操作,除非插入的位置被间隙锁锁定。


4. 锁的效果与隔离级别

  • READ UNCOMMITTED

    • 不加锁(或只加极少的锁),允许读取未提交的数据。

  • READ COMMITTED

    • 对修改的行加排他锁,但不会加间隙锁。

  • REPEATABLE READ

    • 对修改的行加排他锁,并可能加间隙锁,防止幻读。

  • SERIALIZABLE

    • 对涉及的范围加锁,包括行锁和间隙锁,确保完全串行化执行。


5. 总结

操作锁类型效果
DELETE行级锁(X锁)、间隙锁阻止其他事务修改或删除该行,可能阻止插入新数据。
UPDATE行级锁(X锁)、间隙锁阻止其他事务修改该行,可能阻止插入新数据。
INSERT行级锁(X锁)、插入意向锁阻止其他事务修改新插入的行,但通常不会阻塞其他插入操作(除非有间隙锁)。

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

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

相关文章

【从零开始学习计算机科学】硬件设计与FPGA原理

硬件设计 硬件设计流程 在设计硬件电路之前,首先要把大的框架和架构要搞清楚,这要求我们搞清楚要实现什么功能,然后找找有否能实现同样或相似功能的参考电路板(要懂得尽量利用他人的成果,越是有经验的工程师越会懂得借鉴他人的成果)。如果你找到了的参考设计,最好还是…

SpringCloud—概述—01

一、微服务 1)单体架构 业务的所有功能实现都打包在一个 war 包或者 jar 包中,这种方式就称为 单体架构 例如,学校中实现的博客系统,前端后端数据库实现,都是在一个项目中 把所有模块都写在一个 web 项目中&#x…

C++ 学生成绩管理系统

一、项目背景与核心需求 成绩管理系统是高校教学管理的重要工具,本系统采用C++面向对象编程实现,主要功能模块包括: 学生信息管理(学号/姓名/3门课程成绩) 成绩增删改查(CRUD)操作 数据持久化存储 统计分析与报表生成 用户友好交互界面 二、系统架构设计 1. 类结构设计 …

go的grpc

GRPC介绍 目录 单体架构微服务架构问题原始的grpc 服务端客户端原生rpc的问题 grpc的hello world 服务端客户端 proto文件proto语法 数据类型 基本数据类型其他数据类型 编写风格多服务 单体架构 只能对整体扩容一荣俱荣,一损俱损代码耦合,项目的开…

1.12.信息系统的分类【ES】

专家系统(ES)技术架构深度解析 一、ES核心定义 🧠 智能决策中枢 由三大核心能力构建的领域专家模拟系统: 存储专家级领域知识(10^4规则量级)支持不确定性推理(置信度>85%)动态…

考研数一非数竞赛复习之Stolz定理求解数列极限

在非数类大学生数学竞赛中,Stolz定理作为一种强大的工具,经常被用来解决和式数列极限的问题,也被誉为离散版的’洛必达’方法,它提供了一种简洁而有效的方法,使得原本复杂繁琐的极限计算过程变得直观明了。本文&#x…

html播放本地音乐

本地有多个音乐文件,想用 html 逐个播放,或循环播放,并设置初始音量。 audio 在 html 中播放音乐文件用 audio 标签: controls 启用控制按钮,如进度条、播放、音量、速度等。不加不显示任何 widget。autoplay 理应启…

DeepSeek-Manus精品课合集【附下载】

AI消息不断,继DeepSeek之后,又出了一个颠覆性的AI产品Manus,号称全球第一个通用型AI。相比与DeepSeek, Manus拥有更强的自主性和执行力。 如果说DeepDeek是一个最强大脑,那么Manus就是一个完整的人! DeepS…

MySQL复习笔记

MySQL复习笔记 1.MySQL 1.1什么是数据库 数据库(DB, DataBase) 概念:数据仓库,软件,安装在操作系统(window、linux、mac…)之上 作用:存储数据,管理数据 1.2 数据库分类 关系型数据库&#…

从源到目标:深度学习中的迁移学习与领域自适应实践

引言:数据驱动的智能时代与迁移挑战 在深度学习快速发展的今天,模型训练对数据量和质量的依赖成为核心瓶颈。面对新场景时,标注数据不足、数据分布差异等问题常导致模型性能骤降。迁移学习(Transfer Learning)与领域自…

【网络】HTTP协议、HTTPS协议

HTTP与HTTPS HTTP协议概述 HTTP(超文本传输协议):工作在OSI顶层应用层,用于客户端(浏览器)与服务器之间的通信,B/S模式 无状态:每次请求独立,服务器不保存客户端状态(通…

Jmeter使用介绍

文章目录 前言Jmeter简介安装与配置JDK安装与配置JMeter安装与配置 打开JMeter方式一方式二 设置Jmeter语言为中文方法一(仅一次性)方法二(永久设置成中文) Jmeter文件常用目录 元件与组件元件组件元件的作用域元件的执行顺序第一个案例添加线程组添加 H…

【NLP 32、文本匹配任务 —— 深度学习】

大劫大难以后,人不该失去锐气,不该失去热度,你镇定了却依旧燃烧,你平静了却依旧浩荡,致那个从绝望中走出来的自己,共勉 —— 25.1.31 使用深度学习在文本匹配任务上主要有两种方式:① 表示型 ②…

发展史 | 深度学习 / 云计算

注:本文为来自 csdn 不错的“深度学习 / 云计算发展史 ” 相关文章合辑。 对原文,略作重排。 深度学习发展史(1943-2024 编年体)(The History of Deep Learning) Hefin_H 已于 2024-05-23 15:54:45 修改 …

通领科技冲刺北交所

高质量增长奔赴产业新征程 日前,通领科技已正式启动在北交所的 IPO 进程,期望借助资本市场的力量,加速技术升级,推动全球化战略布局。这一举措不仅展现了中国汽车零部件企业的强大实力,也预示着行业转型升级的新突破。…

TCP/IP 5层协议簇:网络层(ICMP协议)

1. TCP/IP 5层协议簇 如下: 和ip协议有关的才有ip头 2. ICMP 协议 ICMP协议没有端口号,因为不去上层,上层协议采用端口号

RISC-V汇编学习(三)—— RV指令集

有了前两节对于RISC-V汇编、寄存器、汇编语法等的认识,本节开始介绍RISC-V指令集和伪指令。 前面说了RISC-V的模块化特点,是以RV32I为作为ISA的核心模块,其他都是要基于此为基础,可以这样认为:RISC-V ISA 基本整数指…

C语言 —— 愿此世如黄金般辉煌 - 进制转换与操作符详解

目录 1. 操作符的分类 2. ⼆进制和进制转换 2.1 2进制转10进制 2.2 10进制转2进制 2.3 2进制转8进制 2.4 2进制转16进制 3. 原码、反码、补码 4. 移位操作符 4.1 左移操作符 4.2 右移操作符 5. 位操作符:&、|、^、~ 5.1 & 按位与 5.2 | 按位或 …

docker1

前言 技术架构 单机架构 应用数据分离架构 应用服务集群架构 读写分离/主从分离架构 写入主的时候,要同步Mysql从的数据才可以 冷热分离架构 写的时候要写入主和缓存数据库 读的时候先去缓存看有没有,没有的话就去从数据库读数据 主要就是看这个数据是…

Spring Boot整合ArangoDB教程

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、环境准备 JDK 17Maven 3.8Spring Boot 3.2ArangoDB 3.11(本地安装或Docker运行) Docker启动ArangoDB docker run -d --name ar…