🔍【Mysql学习笔记】锁篇

type
status
date
slug
summary
tags
category
icon
password
Blocked by
Blocking
AI summary
 
 

锁的分类

 
一、按照锁的粒度分类

1. 全局锁(Global Lock)

对整个数据库实例进行加锁,使其处于只读状态。
使用场景
  • 全库逻辑备份
  • 全库一致性快照
使用方式

2. 表级锁(Table Lock)

2.1 表锁(Table Lock)

对整张表进行加锁,阻塞其他用户对该表的所有读写操作。
使用场景
  • 表维护操作
  • 全表数据更改
语法

2.2 元数据锁(MDL Lock)

自动加锁,保护表结构。
触发场景
  • 查询操作自动加 MDL 读锁
  • DDL 操作自动加 MDL 写锁
示例

2.3 意向锁(Intention Lock)

表级锁,为了支持多粒度锁定。
类型
  • 意向共享锁(IS)
  • 意向排他锁(IX)

2.4 自增锁(AUTO-INC Lock)

用于保证自增字段的唯一性。
应用

3. 行级锁(Row Lock)

3.1 记录锁(Record Lock)

锁定单个行记录。
示例

3.2 间隙锁(Gap Lock)

锁定索引记录之间的间隙,防止幻读。
示例

3.3 临键锁(Next-Key Lock)

记录锁和间隙锁的组合。

二、按照使用机制分类

1. 读锁(共享锁,S锁)

允许多个事务同时读取数据。
特点
  • 可以并发读
  • 阻塞写操作

2. 写锁(排他锁,X锁)

单独占有数据,阻塞其他读写操作。
特点
  • 独占访问
  • 阻塞其他读写

三、按照加锁机制分类

1. 乐观锁

假设数据一般情况下不会发生冲突。
实现方式

2. 悲观锁

假设数据一定会发生冲突。
实现方式

死锁是什么

死锁是两个或多个事物相互持有对方需要的锁,导致这些事物都无法继续执行,形成一个循环等待的状态
Prev
【Redis学习笔记】数据类型篇
Next
【Mysql学习笔记】 日志篇
Loading...
Article List