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

MySQL 的锁

      • MySQL有哪些锁?
      • 各种锁的作用与使用场景
        • 全局锁
        • 表级锁
          • 表锁
          • 元素锁
          • 意向锁
          • AUTO-INC 锁
        • 行级锁
          • 记录锁
          • 间隙锁
          • 临键锁
      • 其他
        • 共享锁
        • 排他锁
        • 乐观锁
        • 悲观锁

MySQL有哪些锁?

  1. 全局锁
  2. 表级锁
    a. 表锁
    b. 元素锁
    c. 意向锁
    d. AUTO-INC 锁
  3. 行级锁
    a. 记录锁
    b. 间隙锁
    c. 临键锁

各种锁的作用与使用场景

全局锁

作用: 就是MySQL 全局上锁,所有的写操作全部阻塞
场景: 全库做逻辑备份的时候使用

表级锁
表锁

作用: 锁定一整个表的数据
场景: 在行锁出现前,一直使用的表锁解决并发读写问题;目前一般比较少用,性能影响比较大.

元素锁

作用: 锁定表的结构
场景: 在要对表的结构进行修改的时候会加

意向锁

作用: 协调行锁与表锁的关系,用于快速判断一个表是否上行锁锁,意向锁会与表级排他锁冲突.
场景:上行锁时候会使用,上表锁的时候先判断是否有意向锁冲突

AUTO-INC 锁

作用: 自增 id 的锁
场景: 定义了自增 id,在写入数据的时候

行级锁
记录锁

作用: 单行数据的锁
场景: 操作某行数据

间隙锁

作用: 某个范围条件的锁,一般用于避免数据幻读
场景: 操作某个范围的数据

临键锁

作用: 记录锁+间隙锁,范围内包含某个值
场景: 操作某个范围的(包含某个值)数据

其他

共享锁

简单理解就是读锁
共享锁可以与共享锁兼容(可同时读)

排他锁

简单理解就是写锁;
排他锁会与排他锁,共享锁都冲突(不可同时读写)

乐观锁
  • 虚拟的锁(并没有加锁),通过版本号解决并发问题,可以在写比较少的情况下,一定程度降低获取释放锁带来的 性能消耗
  • 乐观锁并不是 MySQL 提供的功能,而是手动实现的
  • 实现方案:
    数据增加一个版本号的字段(可以使用自增 或者当前时间戳),每次更新数据都先检查数据更新前后版本号是否一致,如果一致说明数据没有更改,可以直接写,如果不一致就说明数据已经被更改了,需要回滚,重新执行.

缺点: 在写操作比较多的情况下会出现大量的冲突回滚性能不佳.

悲观锁
  • 真正意义上的原子锁(真实的锁)
http://www.lryc.cn/news/506007.html

相关文章:

  • 二、使用langchain搭建RAG:金融问答机器人--数据清洗和切片
  • 【Linux】-- linux 配置用户免密登录本机
  • 泷羽sec学习打卡-brupsuite8伪造IP和爬虫审计
  • 【uniapp蓝牙】基于native.js链接ble和非ble蓝牙
  • .NET Core 各版本特点、差异及适用场景详解
  • Linux中自动检测并定时关闭KDialog程序
  • CSS学习记录12
  • 【Java基础面试题016】JavaObject类中有什么主要方法,作用是什么?
  • 实践环境-docker安装mysql8.0.40步骤
  • 边缘智能创新应用大赛获奖作品系列一:智能边缘计算✖软硬件一体化,开启全场景效能革命新征程
  • 决策树的生成与剪枝
  • 蓝桥杯算法训练 黑色星期五
  • MySQL存储引擎-存储结构
  • 理解torch函数bmm
  • 2024 年的科技趋势
  • win服务器的架设、windows server 2012 R2 系统的下载与安装使用
  • leetcode45.跳跃游戏II
  • 边缘智能创新应用大赛获奖作品系列三:边缘智能强力驱动,机器人天团花式整活赋能千行百业
  • 基于语义的NLP任务去重:大语言模型应用与实践
  • 使用阿里云Certbot-DNS-Aliyun插件自动获取并更新免费SSL泛域名(通配符)证书
  • Node.js安装配置+Vue环境配置+创建一个VUE项目
  • “TA”说|表数据备份还原:SQLark 百灵连接助力项目部署验收
  • 【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )
  • Spring Boot 集成 MyBatis 全面讲解
  • C语言小练习-打印字母倒三角
  • Linux -- 线程控制相关的函数
  • 基于quasar,只选择年度与月份的组件
  • 健康养生:拥抱生活的艺术
  • 注意力机制+时空特征融合!组合模型集成学习预测!LSTM-Attention-Adaboost多变量时序预测
  • uniapp 微信小程序 均分数据展示