MySQL-锁篇

文章目录

锁是一种常见的并发事务的控制方式

表级锁和行级锁了解吗?有什么区别?

表级锁:MySQL中锁定粒度最大的一种锁(全局锁除外),针对非索引字段加的锁,不会出现死锁,不过,触发锁冲突的概率最高,高并发下效率极低

行级锁:MySQL中锁定粒度最小的一种锁,是针对索引字段加的锁,只针对当前操作记录的行加的锁

行级锁使用有什么注意事项?

行锁是针对索引字段加的锁,表级锁是针对非索引字段的锁,当我们执行update,delete语句时,如果where条件没有命中唯一索引或者索引失效的话,就会导致扫描全表对表中所有行记录进行加锁

InnoDB有哪几类行锁?

  1. 记录锁:锁定单个行记录的锁
  2. 间隙锁:锁定索引记录间隙(不含该记录)
  3. 临键锁:记录锁+间隙锁,同时锁住数据,并锁住间隙

共享锁和排他锁是什么?

不论表级锁和行级锁,都存在共享锁(S锁)和排他锁(X锁)两类
共享锁 :读锁,事务在读取 记录时获取共享锁,允许多个事务同时获取
排他锁 :写锁/独占锁,事务在修改 记录时获取排他锁,不允许多个事务同时获取

排他锁与其他任何锁都不兼容,共享锁只与共享锁兼容

S 锁 X 锁
S 锁 不冲突 冲突
X 锁 冲突 冲突

意向锁有什么用?

用到表锁时,快速判断一个表是否有行锁

意向锁是表级锁,分为两类:

  • 意向共享锁(IS锁):事务有意向对表中某些记录添加共享锁(S锁),加共享锁之前必须先获取该表的IS锁
  • 意向排他锁(IX锁):事务有意向对表中某些记录添加排他锁(X锁),加排它锁之前必须先获取该表的IX锁

意向锁之间是相互兼容的

IS 锁 IX 锁
IS 锁 兼容 兼容
IX 锁 兼容 兼容

意向锁和共享锁和排他锁互斥兼容情况

IS 锁 IX 锁
S 锁(读锁) 兼容 互斥
X 锁(写锁) 互斥 互斥
相关推荐
景煜拾年10 小时前
InnoAI SQL 助手
运维·数据库·笔记·sql
.痞老板.10 小时前
mysql初阶--数据类型
android·数据库·mysql
Risehuxyc11 小时前
MySQL密码插件
数据库·mysql
腾科IT教育11 小时前
Oracle考试全解析:OCP、OCM认证体系与核心考点备考指南
数据库·oracle·开闭原则
叼烟扛炮21 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
.痞老板.1 天前
mysql初阶--数据库基础
数据库·mysql
城北徐宫1 天前
MySQL约束条件一览
数据库·mysql
码农小河661 天前
基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
java·开发语言·mysql
ClouGence1 天前
数据库变更审批困局,被这个开源工具解决了
数据库·开源
TDengine (老段)1 天前
TDengine IDMP 十大实用功能(9)
大数据·数据库·人工智能·物联网·时序数据库·tdengine·idmp