Mysql中的那些锁

表锁和行锁

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

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

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

行锁的类型

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

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

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

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

共享锁和排他锁

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

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

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

意向锁

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

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

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

相关推荐
廿一夏7 小时前
MySql存储引擎与索引
数据库·sql·mysql
lzhdim9 小时前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室9 小时前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
TDengine (老段)9 小时前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
敲个大西瓜10 小时前
Java项目常用数据归档方式
mysql
YOU OU10 小时前
Spring IoC&DI
java·数据库·spring
Muscleheng11 小时前
Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
数据库·postgresql
kyriewen12 小时前
面试官让我查各部门工资最高的员工,我用AI三秒写出窗口函数,他愣了
后端·mysql·面试
小码工作室12 小时前
使用 HAVING 进行 MySQL 集合筛选
mysql
罗超驿12 小时前
18.事务的隔离性和隔离级别:MySQL面试高频考点全解析
数据库·mysql·面试