Mysql中的那些锁

表锁和行锁

表锁:一锁锁整张表,mysql中锁定颗粒度最大的一种,针对非索引字段加的锁。MyISAM和InnoDb都支持。

行锁:一锁只锁整行,锁定颗粒度最小,针对索引字段加的锁。MyISAM不支持,InnoDb支持。

PS:行锁是针对索引字段加的锁,如果where没有命中索引的话,可能会加表锁。

行锁的类型

记录锁:单个记录的锁,只能锁住已存在的数据,

间隙锁:锁定一个范围的行记录,不包括他本身,可以避免这个范围内插入数据。当使用的条件查询是范围时,会使用间隙锁。

临键锁:锁定一个范围的行记录,包括他本身。

PS:在InnoDb默认的可重复读的隔离级别下,默认使用的是临键锁,如果去操作的索引是主键索引或者唯一索引,会优化为记录锁。

共享锁和排他锁

也叫读写锁,行锁和表锁都有共享锁和排他锁。

共享锁:读锁,事务在读取记录时获取的锁,多个事务之间可以共享。

排他锁:写锁,事务在修改记录时获取的锁,多个事务之间不能是互斥的,不能共享。

意向锁

意向锁也分行级意向锁和表级意向锁,用来判断有没有被加锁。

意向共享锁:在加共享锁之前,要先获取意向共享锁。

意向排他锁:在加排他锁之前,要先获取意向排他锁。

相关推荐
AI.NET 极客圈4 分钟前
.NET 原生驾驭 AI 新基建实战系列(六):Pinecone ── 托管向量数据库的向量数据库的云原生先锋
数据库·人工智能·.net
码农开荒路9 分钟前
Redis底层数据结构之字典(Dict)
java·数据结构·数据库·redis
编程大全19 分钟前
41道Django高频题整理(附答案背诵版)
数据库·django·sqlite
孙克旭_1 小时前
day028-Shell自动化编程-判断进阶
linux·运维·数据库·自动化
L.S.V.1 小时前
MYSQL(三)--服务器启动参数与配置
服务器·数据库·mysql
有时间要学习1 小时前
MySQL——视图 && 用户管理 && 语言访问
数据库·mysql
趁你还年轻_2 小时前
Redis大量key集中过期怎么办
数据库·redis·缓存
GUIQU.2 小时前
【Oracle】视图
数据库·oracle
南棱笑笑生2 小时前
20250605在微星X99主板中配置WIN10和ubuntu22.04.6双系统启动的引导设置
数据库