IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL——锁 -> 正文阅读

[大数据]MySQL——锁

MySQL 有哪些锁?

全局锁 表级锁

1 全局锁

  • 状态:使用全局锁后,整个数据库处于只读状态。对内容和表结构的增删改都不能进行
  • 作用:主要用于全库逻辑备份 备份期间不会出现更新导致备份与预期不一样
  • 缺点:备份会花很长时间,导致业务停滞
  • 措施:对于支持可重复读的隔离级别,备份前开启事务 创建ReadView 其他业务正常进行

2 表级锁

表锁、元数据锁、意向锁、AUTO-INC锁

2.1 表锁

对表加锁后,会限制本线程和其他线程的读写操作 但是颗粒度太大,会影响并发性能,尽量避免使用表锁

2.2 元数据锁(MDL)
  • 元数据锁不需要主动使用,当我们对表进行CRUD,自动加MDL读锁;对表结构更改,自动加MDL写锁
  • MDL在事务提交后自动释放。如果一个事务迟迟没有提交,会出问题。导致其他线程的请求一直在等待
2.3 意向锁

先解释下两个概念

  • 共享锁:共享锁可以被多个线程持有,获得共享锁的可以读数据,但是不能改数据。也就是允许你读也允许别人读。但加了共享锁,别人就不能加独占锁(排他)我先要读的,你可以来读,但是不允许你写
  • 独占锁:独占锁被单个线程所持有,获得独占锁的可以读也可以写数据。但是不能同时被其他线程共享和独占。 要写只能我自己写,别人不能看,也不能写
    接着说意向锁:
  • 在使用InnoDB引擎对表记录加【共享锁】之前,需要先在表级别上加一个【意向共享锁】
  • 在使用InnoDB引擎对表记录加【独占锁】之前,需要先在表级别上加一个【意向独占锁】
  • 意向共享锁和意向独占锁是表级锁,不会和行级的锁冲突。而且意向锁之间也不会冲突(意向而已)只会和共享表锁和独占表锁冲突
  • 满足:读读共享、读写互斥、写写互斥

意向锁的作用在于:如果没有意向锁,那么在加独占表锁之前,需要遍历表的记录,查看是否有独占锁,效率很慢。有了意向锁,在加独占锁之前,先对所在的表加意向独占锁。那么其他锁来的时候之间就能看到是否有记录被加了独占锁,不用遍历。(一家有阳,整个村子先列为风险区 别人看到就知道有阳 不用挨家挨户看有没有阳)
意向锁的目的是为了快速判断表里是否有记录被加锁

2.4 AUTO-INC锁
  • 用来保证自增实现。执行AUTO-INC锁的过程中,其他事务要向表中插入数据的操作都会被阻塞,从而保证连续递增
  • 不再是事务提交后才释放,而是执行完插入语句后自动释放锁。
  • 缺点:对于大量插入,影响性能 所以提供了轻量级的锁来完成,会在递增字段枷锁,赋一个递增值,就释放。不需要等待整个插入完成。

3 行级锁

  • 记录锁(Record Lock): 锁住的是一条记录 其他事务无法修改 也分XS
  • 间隙锁(Gap Lock):对范围记录加锁,这一其他事务无法插入记录,有效防止幻读
  • 临键锁(Next-Key Lock)是上面两个的组合 锁定范围也锁定记录本事 (3,5】锁则不能插入4 也不能修改5
  • 插入意向锁:插入记录时要判断是否被加了间隙锁,插入意向锁是行级别的,表明我下一步要插入,但目前在等待,它不是意向锁 。比如A设置间隙锁(35 )B想插入4 等A结束才行 它锁住的是一个点4 而不是区间
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:48:45  更:2022-10-08 20:51:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 -2025/5/1 7:59:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码