select for update会锁表还是行锁还是其它

select for update含义

select查询语句是不会加锁的,但是 select for update除了有查询的作用外,还会加锁呢,而且它是悲观锁哦。至于加了是行锁还是表锁,这就要看是不是用了索引/主键啦。

没用索引/主键的话就是表锁,否则就是是行锁。

select for update加锁验证

表结构:

//id为主键,name为唯一索引

CREATE TABLE account (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
balance int(11) DEFAULT NULL,

PRIMARY KEY (id),

KEY idx_name (name) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=1570068 DEFAULT CHARSET=utf8

id为主键,select for update 1270070这条记录时,再开一个事务对该记录更新,发现更新阻塞啦,其实是加锁了。如下图:

我们再开一个事务对另外一条记录 1270071更新,发现更新成功,因此,如

果查询条件用了索引/主键,会加行锁~

我们继续,换普通字段 balance吧,发现又阻塞了。因此,没用索引/主键的话,selectfor update加的就是表锁

相关推荐
chxii几秒前
6.2字节流
java·开发语言
不务专业的程序员--阿飞10 分钟前
【SQL 如何解锁递归】
java·数据库·sql
嘵奇16 分钟前
Spring Boot拦截器详解:原理、实现与应用场景
java·spring boot·后端
八股文领域大手子17 分钟前
Java死锁排查:线上救火实战指南
java·开发语言·面试
jackson凌23 分钟前
【Java学习笔记】finalize方法
java·笔记·学习
fanTuanye26 分钟前
redis 缓存穿透,缓存击穿,缓存雪崩
java·redis·缓存
神秘的t44 分钟前
Spring Web MVC————入门(2)
java·spring·mvc
右璇1 小时前
ORACLE查看归档是否打开
数据库·oracle
开开心心就好1 小时前
高效全能PDF工具,支持OCR识别
java·前端·python·pdf·ocr·maven·jetty
冷心笑看丽美人1 小时前
Spring MVC数据绑定和响应 你了解多少?
java·spring·mvc