MySQL的锁有三种类别:1. 表级锁:包括表共享锁和表独占锁;2. 行级锁:包括共享锁和排他锁;3. 页面锁。表级锁中表共享锁允许一个事务读取一张表,同时阻止其他事务对该表进行写操作。表独占锁阻止其他事务对表进行读写操作,通常用于对整个表的操作如删除表。页面锁定是MySQL中InnoDB存储引擎的特性,页面锁锁定的是数据文件中的一页,通常用于大批量的数据操作。
1.表级锁
- 表共享锁(Table Shared Lock): 允许一个事务读取一张表,同时阻止其他事务对该表进行写操作。
- 表独占锁(Table Exclusive Lock): 阻止其他事务对表进行读写操作,通常用于对整个表的操作如删除表等。
2.行级锁
- 共享锁(Shared Lock): 允许事务读取一行数据,同时阻止其他事务对该行数据进行修改和删除。
- 排他锁(Exclusive Lock): 阻止其他事务对该行数据进行读写操作,通常用于对单个行的更新或删除操作。
3.页面锁
- 页面锁定是MySQL中InnoDB存储引擎的特性,它介于表级锁和行级锁之间。页面锁锁定的是数据文件中的一页,通常用于大批量的数据操作。
延伸阅读:
MySQL锁的实现机制
MySQL的锁实现是通过锁管理器来完成的。锁管理器负责管理所有的锁请求和释放锁的请求。当一个事务请求一个锁时,锁管理器会判断该锁是否可以被授予。如果可以,那么事务将得到锁并继续执行。如果不能,那么事务将进入等待状态,直到锁被其他事务释放。
文章标题:从锁的类别上分MySQL都有哪些锁,发布者:Flawy,转载请注明出处:https://worktile.com/kb/p/59386