MYSQL的UPDATE时锁表机制

(笔记,只为获取流量券)

MySQL中,UPDATE 操作涉及到行级锁和表级锁的概念,具体取决于事务隔离级别和被更新的条件,

  1. 无索引的情况下:

    • 当表没有索引的情况下,UPDATE 操作通常会涉及到表级锁。
    • 这是因为在没有索引的情况下,MySQL需要锁定整个表以确保在更新期间没有其他并发操作对表产生影响。
  2. 有索引的情况下:

    • 如果使用索引来定位要更新的行,而且更新操作不涉及索引列以外的其他列,那么 UPDATE 操作可能只会涉及到行级锁。
    • 如果更新操作涉及到索引列以外的其他列,MySQL可能会选择锁定更多的内容,可能包括整个索引或索引的一部分,这可能导致更大的锁定范围。
    • 如果更新操作使用主键索引,效果通常会和直接使用主键进行更新类似。在这种情况下,行级锁通常是适用的。

有索引的情况下可以更倾向于行级锁,但具体情况还受到更新操作的具体内容和使用的索引类型的影响。在某些情况下,MySQL可能仍然会选择表级锁,特别是在涉及到非唯一索引或涉及到非索引列的情况下

正常举例:

相关推荐
斌味代码31 分钟前
MySQL主从延迟根因诊断法
数据库
逆境不可逃36 分钟前
高频 SQL 50 题 之 连接篇 1378 1068 1581 197 1661 577 1280 570 1934
数据库·sql
用户5757303346241 小时前
从 SQL 到对象:Prisma 如何成为全栈开发的“降维打击”利器
数据库
三更两点1 小时前
智能代理工具包:MCP vs. Agent Skills vs. AGENTS.md
数据库·人工智能
Chasing Aurora1 小时前
整理常用的开发工具使用问题和小贴士(二)——软件和浏览器
redis·python·mysql·maven
丸辣,我代码炸了1 小时前
PostgreSQL 大数据查询与索引优化核心总结
大数据·数据库·postgresql
等....2 小时前
Redis使用
数据库·redis·mybatis
betazhou2 小时前
记一次Oracle REDO在线日志损坏故障修复
数据库·oracle·redo·ora-00600
一只小bit2 小时前
Redis 初步入门教程:简单介绍和安装配置
数据库·redis·缓存
仲芒2 小时前
[24年单独笔记] MySQL 引擎架构
笔记·mysql·架构