当前位置:网站首页>Mysql数据库-锁-学习笔记
Mysql数据库-锁-学习笔记
2022-07-07 06:28:00 【白蝶丶】
锁是什么
锁是计算机协调多个进程或线程并发访问某一资源的机制,用于管理对共享资源的并发访问
表级锁
表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、 InnoDB等存储引擎中
表锁
- 表读锁( 语法:lock tables 表名 read; )
- 表写锁( 语法:lock tables 表名 write; )
- 释放锁(unlock tables)
读锁:
写锁:
元数据锁
meta data lock , 元数据锁,简写MDL。
MDL锁主要作用是维 护表元数据的数据一致性,在表上有事务时,不能对表结构进行修改。为了避免DML与DDL冲突,保证了读写的正确性
意向锁
为了避免DML在执行时,加的行锁与表锁的冲突,在InnoDB中引入了意向锁,使得表锁不用检查每行数据是否加锁,使用意向锁来减少表锁的检查。
- 意向共享锁(IS): 由语句select … lock in share mode添加 ; 与 表锁共享锁 (read)兼容,与表锁排他锁(write)互斥。
- 意向排他(IX):由insert、update、delete、select…for update添加 ;与表锁共享锁(read)及排他锁(write)都互斥,意向锁之间不会互斥。
一旦事务提交,意向共享锁、意向排他锁都会自动取消
行级锁
行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在 InnoDB存储引擎中。
InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的 锁。对于行级锁,主要分为以下三类:
行锁
共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排它锁。
排他锁(X):允许获取排他锁的事务更新数据,阻止其他事务获得相同数据集的共享锁和排他锁。
针对唯一索引进行检索时,对已存在的记录进行等值匹配时,将会自动优化为行锁。
InnoDB的行锁是针对于索引加的锁,不通过索引条件检索数据,那么InnoDB将对表中的所有记 录加锁,此时 就会升级为表锁。
间隙锁&临键锁
- 索引上的等值查询(唯一索引),给不存在的记录加锁时, 优化为间隙锁 。
- 索引上的等值查询(非唯一普通索引),向右遍历时最后一个值不满足查询需求时,next-key lock 退化为间隙锁。
- 索引上的范围查询(唯一索引)–会访问到不满足条件的第一个值为止。
注意:间隙锁唯一目的是防止其他事务插入间隙。间隙锁可以共存,一个事务采用的间隙锁不会 阻止另一个事务在同一间隙上采用间隙锁。
间隙锁唯一目的是防止其他事务插入间隙。间隙锁可以共存,一个事务采用的间隙锁不会阻止另一个事务在同一间隙上采用间隙锁。
边栏推荐
- Unityshader introduction essentials personal summary -- Basic chapter (I)
- 寄存器地址名映射
- Cmake command line use
- Recommended by Alibaba P8, the test coverage tool - Jacobo is very practical
- 串口实验——简单数据收发
- C language pointer (special article)
- STM32串口寄存器库函数配置方法
- The essence of high availability
- Implement custom memory allocator
- 外部中断实现按键实验
猜你喜欢
端口复用和重映像
Confitest of fixture py
C language pointer (special article)
Locust performance test 4 (custom load Policy)
LED模拟与数字调光
Reading notes of pyramid principle
Led analog and digital dimming
E-commerce campaign Guide
Output a spiral matrix C language
Expérience de port série - simple réception et réception de données
随机推荐
Three updates to build applications for different types of devices | 2022 i/o key review
硬件大熊原创合集(2022/05更新)
端口复用和重映像
Led analog and digital dimming
Analysis of Hessian serialization principle
数据在内存中的存储
Leetcode刷题记录(数组)组合总和、组合总和 II
【ChaosBlade:节点磁盘填充、杀节点上指定进程、挂起节点上指定进程】
Several methods of calculating the average value of two numbers
Selenium automation integration, eight years of testing experience, soft test engineer, an article to teach you
2022-06-30 Unity核心8——模型导入
Simulation volume leetcode [general] 1567 Length of the longest subarray whose product is a positive number
Two schemes of unit test
Chaosblade: introduction to chaos Engineering (I)
【Istio Network CRD VirtualService、Envoyfilter】
Test Engineer Interview Questions 2022
模拟卷Leetcode【普通】1609. 奇偶树
Panel display technology: LCD and OLED
Markdown editor Use of MD plug-in
[chaosblade: node disk filling, killing the specified process on the node, suspending the specified process on the node]