MYSQL的UPDATE时锁表机制

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

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

  1. 无索引的情况下:

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

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

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

正常举例:

相关推荐
lalala_lulu1 小时前
并发事务带来哪些问题?(超详细版)
数据库·oracle
点灯小铭1 小时前
基于单片机的智慧校园自动打铃系统设计
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
小四的快乐生活1 小时前
关系型数据库、NoSQL、NewSQL 选型比对
数据库
自燃人~1 小时前
数据库性能调优中的经典高频面试题
数据库
施嘉伟1 小时前
通过 GDB 推进 Oracle SCN 的实验总结
数据库·oracle
萧曵 丶1 小时前
领域驱动设计(DDD)浅谈
数据库·microsoft
莳花微语2 小时前
再谈Oracle统计信息
数据库·oracle
凹凸曼说我是怪兽y3 小时前
Redis分布式锁详细实现演进与Redisson深度解析
数据库·redis·分布式
哈里谢顿9 小时前
MySQL 索引失效的 12 宗罪:一条 SQL 是怎样把索引踢出执行计划的?
mysql