码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL update 是锁行还是锁表?


    事务竞争

    在多个事务并行对同一个数据进行修改的时候,会产生事务的竞争造成脏读、幻读、不可重复读等问题。所以 Mysql 为了避免这类问题的出现,引入了事务隔离级别,其实本质上来说,最终解决的方式无非就是 LBCC 和 MVCC 两种。 而锁是解决事物竞争问题的底层实现方式。通常来说,加锁会影响性能, 所以一般情况下都会考虑到性能和安全性的平衡,而 Mysql,也根据不同的作用范围,提供了不同的锁的实现方式。

    MySQL update 是锁行还是锁表?

    MySQL 的 Update 操作既可以锁行,也可以锁表, 具体使用哪种锁类型,取决于执行的 Update 语句的条件、事务隔离级别等因素。

    • 如果 update 语句中的 where 条件包含了索引列,并且只更新一条数据,那这个时候就加行锁。如果 where 条件中不包含索引列,这个时候会加表锁
    • 根据查询范围不同,Mysql 也会选择不同粒度的锁来避免幻读问题。比如针对主键索引的 for update 操作:SELECT * FROM t WHERE id = 10 FOR UPDATE;Mysql 会增加 Next-Key Lock 来锁定 id=10 索引所在的区间
    • 针对于索引区间的查询或者修改SELECT * FROM user WHERE id BETWEEN 1 AND 100 FOR UPDATE;Mysql 会自动对索引间隙加锁,来解决幻读问题。
  • 相关阅读:
    基于SpringBoot的网上超市系统
    Spring MVC 源码分析
    《QT从基础到进阶·三十三》QT插件开发QtPlugin
    vivo霍金实验平台设计与实践-平台产品系列02
    管理体系标准
    GO语言使用之网络编程(TCP编程)
    0/1背包问题
    双因素方差分析及其Python代码
    移动端的助农电商系统-计算机毕业设计源码08655
    【多媒体技术与实践】音频信息获取和处理——编程题汇总
  • 原文地址:https://blog.csdn.net/qq_63431773/article/details/134005527
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号