当前位置: 首页 > news >正文

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锁)、插入意向锁阻止其他事务修改新插入的行,但通常不会阻塞其他插入操作(除非有间隙锁)。

相关文章:

  • HarmonyOS:基于hmrouter实现Page的生命周期监听
  • 【监督学习】支持向量机步骤及matlab实现
  • Ruby爬虫如何控制并发数量:爬取京东电子产品
  • 在 Docker 中,无法直接将外部多个端口映射到容器内部的同一个端口
  • 前端多角色权限页面(同浏览器同时登录)数据互串解决
  • 常见的限流算法有哪些
  • Redis 面试专题
  • vue2.6附件预览及下载
  • Python的那些事第四十一篇:简化数据库交互的利器Django ORM
  • HttpRunner框架 核心知识的系统复习
  • linux磁盘非lvm分区
  • 【高并发】消息队列(MQ)全解析:原理、主流产品及 Java 实现
  • 自由学习记录(42)
  • 基于SNR估计的自适应码率LDPC编译码算法matlab性能仿真,对比固定码率LDPC的系统传输性能
  • Golang的数据库分库分表策略
  • llamafactory大模型微调教程(周易大模型案例)
  • 解锁STM32外设:开启嵌入式开发新世界
  • ⭐算法OJ⭐跳跃游戏【BFS+滑动窗口】(C++实现)Jump Game 系列 III,VII
  • C++智能指针shared_ptr
  • 从0开始的操作系统手搓教程23:构建输入子系统——实现键盘驱动1——热身驱动
  • 什么网站做简历免费下载/上海今天刚刚发生的新闻
  • 桂林网站制作/现在比较好的营销平台
  • 永济市网站建设/html网页制作软件有哪些
  • 沈阳公司网站建设/百度站长工具查询
  • 响应式布局的优点是什么/深圳网站设计实力乐云seo
  • 中国临沂网站优化/站外推广