欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

mysql 隔离级别和锁相关

发布时间:2025/5/22 数据库 121 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mysql 隔离级别和锁相关 小编觉得挺不错的,现在分享给大家,帮大家做个参考.


mysql数据库中存在三种锁,间隙锁(gap-lock) , 行锁(record-lock),gap-record-lock

gap-record-lock 是间隙锁和行锁的组合,


间隙锁(gap lock) 

行锁(record lock)

record-lock:



测试表:

CREATE TABLE `tt` (

  `tid` int(11) NOT NULL DEFAULT '0',

  `tname` varchar(10) DEFAULT NULL,

  `tage` tinyint(4) DEFAULT NULL,

  `taddr` varchar(100) DEFAULT NULL,

  `tmark` varchar(1000) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8



无论在什么隔离级别下,以下操作都是要获取表的metadata锁的

truncate,DDL(alter,drop,create),添加索引 会对表添加metadata锁,也就是会锁定整张表



在隔离级别是rr的情况下,delete,update,insert的锁的表现形式


delete from tt where tid = 1  

update tt set taddr = "BeiJing" where tid = 1


1.tid为主键 

(1).1存在于表中就对记录添加record-lock

(2).1不存在于表中gap-lock,行记录的间隙锁


2.tid为普通字段(没有索引)就对所有记录添加,record-lock,grap-lock

 

3.tid为非聚集唯一索引

(1).1存在于表中就对记录添加record-lock,会锁定索引值和行数据

(2).1不存在于表中就添加gap-lock,会锁定索引的某一个范围值


4.tid为非聚集非唯一索引

(1).1存在于表中就添加record-lock,gap-lock,会对行记录,索引记录添加record-lock,会锁定索引的某一个范围

(2).1不存在于表中,会锁定索引的某个范围



insert 

添加意向插入锁,检查某个范围是否被锁定

间隙锁只会影响插入,不会影响update和delete


1.只有主键对记录添加X锁

2.有唯一键,会对唯一键值添加S锁

3.有主键和唯一键,对主键值添加x,对唯一键值添加s


insert into test1  select * from test 

在rr情况下test 添加的是s锁,test1 添加的X 



在隔离级别是rc的情况下,delete,update,insert的锁的表现形式


delete from tt where tid = 1  

update tt set taddr = "BeiJing" where tid = 1


1.tid为主键 

(1).1存在于表中就对记录添加record-lock

(2).1不存在于表中,不添加锁


2.tid为普通字段(没有索引)就对所有记录添加锁


3.tid为非聚集唯一索引

(1).1存在于表中就对记录添加record-lock,会锁定索引值和行数据

(2).1不存在于表中不锁定数据


4.tid为非聚集非唯一索引

(1).1存在于表中就添加record-lock,会对行记录,索引记录添加record-lock

(2).1不存在于表中不添加锁



insert

1.只有主键对记录添加X锁

2.有唯一键,会对唯一键值添加S锁

3.有主键和唯一键,对主键值添加x,对唯一键值添加s



insert into test1  select * from test 

在rc隔离级别下 test1中没有数据的情况下test ,test1 不添加锁

在rc隔离级别下 test1中有数据的情况下test ,不添加锁 ,test1 加S表所



select *  into outfile  from  test   不锁定test表(rr,rc都有验证)



转载于:https://blog.51cto.com/dwchaoyue/1879590

总结

以上是生活随笔为你收集整理的mysql 隔离级别和锁相关的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。