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

数据库锁的分类 各种锁

锁的一个分类

  • 数据库中的锁
    • 前言
    • 分享链接
    • 个人总结
      • 全局锁:
      • 表级锁
      • 行级锁:

数据库中的锁

前言

C++支持并发有锁,Linux里面也有锁机制,数据库也有锁,什么互斥锁,表级锁,间隙锁,好多…,本文以循序渐进的方式,学习数据库中的锁…

分享链接

讲的比较不容易懂,但是分类清晰。
数据库锁的一个分类

数据库的锁,视频讲解,不是很全,用来理解挺好
b站视频讲解
在这里插入图片描述
小林code讲解的:讲解的易懂,循序渐进。小林code讲解
在这里插入图片描述

个人总结

全局锁:

所有数据只读,应用于做全库逻辑备份

表级锁

表锁:对整个表锁,有共享和排他表锁
元数据锁MDL:不需要显示的使用 MDL,因为当我们对数据库表进行操作时,会自动给这个表加上 MDL:对一张表进行 CRUD 操作时,加的是 MDL 读锁;对一张表做结构变更操作的时候,加的是 MDL 写锁,MDL 是为了保证当用户对表执行 CRUD 操作时,防止其他线程对这个表结构做了变更
意向锁:
在使用 InnoDB 引擎的表里对某些记录加上「共享锁」之前,需要先在表级别加上一个「意向共享锁」
在使用 InnoDB 引擎的表里对某些纪录加上「独占锁」之前,需要先在表级别加上一个「意向独占锁」
意向共享锁和意向独占锁是表级锁,不会和行级的共享锁和独占锁发生冲突,而且意向锁之间也不会发生冲突,只会和共享表锁(lock tables … read)和独占表锁(lock tables … write)发生冲突
如果没有「意向锁」,那么加「独占表锁」时,就需要遍历表里所有记录,查看是否有记录存在独占锁,这样效率会很慢。
那么有了「意向锁」,由于在对记录加独占锁前,先会加上表级别的意向独占锁,那么在加「独占表锁」时,直接查该表是否有意向独占锁,如果有就意味着表里已经有记录被加了独占锁,这样就不用去遍历表里的记录
意向锁的目的是为了快速判断表里是否有记录被加锁
AUTO-INC 锁:这是通过对主键字段声明 AUTO_INCREMENT 属性实现的。为了正确递增

行级锁:

record lock :就锁一行 分共享和排他
gap lock:Gap Lock 称为间隙锁,只存在于可重复读隔离级别,目的是为了解决可重复读隔离级别下幻读的现象,间隙锁虽然存在 X 型间隙锁和 S 型间隙锁,但是并没有什么区别
Next-Key Lock :称为临键锁,是 Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身,next-key lock 是包含间隙锁+记录锁的,如果一个事务获取了 X 型的 next-key lock,那么另外一个事务在获取相同范围的 X 型的 next-key lock 时,是会被阻塞的
插入意向锁:一个事务在插入一条记录的时候,需要判断插入位置是否已被其他事务加了间隙锁(next-key lock 也包含间隙锁),如果有,发生阻塞,直到拥有间隙锁的那个事务提交为止(释放间隙锁的时刻),在此期间会生成一个插入意向锁。

http://www.lryc.cn/news/136539.html

相关文章:

  • MySQL数据库软件
  • 无涯教程-PHP - preg_match_all()函数
  • Docker 练习2 安装MySQL
  • AndroidStudio 编译报错Unable to make field private final
  • linux 上安装es
  • 自然语言处理从入门到应用——LangChain:索引(Indexes)-[文本分割器(Text Splitters)]
  • Chrome如何安装插件(文件夹)
  • MySql 环境搭建
  • mysql 表的约束
  • 认识Redis
  • 同步、异步无障碍:Python异步装饰器指南
  • CodeSite for .NET Crack
  • 基于IMX6ULLmini的linux裸机开发系列九:时钟控制模块
  • 【数据结构与算法】1. 绪论
  • 2023年京东儿童智能手表行业数据分析(京东销售数据分析)
  • 数据结构(6)
  • C++学习|CUDA安装和配置
  • 3.若依前后端分离版开发用户自定义配置表格功能
  • 【操作系统】24王道考研笔记——第三章 内存管理
  • Spring缓存深入解析:@Cacheable的使用详解
  • 软件配置安装(破解)--- jdk下载配置
  • idea使用docker生成镜像(打包镜像,导入镜像,导出镜像)
  • wazuh环境配置
  • 【Linux】Linux下常用压缩解压缩指令及选项小结
  • 香蕉派社区推出带10G SFP+ 端口的Banana Pi BPI-R4 Wifi7开源路由器
  • A 题:震源属性识别模型构建与震级预测 :代码分析:
  • 源码分析CompletableFuture使用默认线程池ForkJoinPool的弊端
  • 连接pgsql数据库 sslmode sslrootcert sslkey sslcert 参数的作用
  • 从零学算法3
  • 宠物小程序开发