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 锁(写锁) 互斥 互斥
相关推荐
Andy1 分钟前
Mysql基础1
数据库·mysql·adb
pythonpioneer3 分钟前
【2025】Solid Edge下载安装教程(附安装包)保姆级安装步骤
前端·数据库·其他·edge
yaoty12 分钟前
alembic使用指南
mysql·alembic
前端伪大叔22 分钟前
第26篇:爆赚利器!三步搞定 Freqtrade 核心买卖信号,手把手教你写自动交易策略!
javascript·mysql·微信
问道飞鱼44 分钟前
【数据库知识】PGSQL常见命令行与函数
数据库·oracle·pgsql
CoookeCola1 小时前
MovieNet (paper) :推动电影理解研究的综合数据集与基准
数据库·论文阅读·人工智能·计算机视觉·视觉检测·database
酷柚易汛智推官1 小时前
MySQL到达梦数据库快速替换操作指南
数据库·mysql·酷柚易汛
PawSQL1 小时前
企业级SQL审核优化工具 PawSQL 介绍(3)- 审核工单管理
数据库·sql·pawsql·sql审核
TDengine (老段)1 小时前
TDengine 数学函数 TRUNCATE 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
鹓于2 小时前
Excel图片批量插入与文件瘦身
java·服务器·数据库