select for update有什么含义,会锁表还是锁行还是其他。

轩辕小不懂 发布于 2021-06-21 16:07
阅读 52
收藏 0
分类:其他
1083
Pack
Pack

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这条记录时,再开一个事务对该记录更新,发现更新阻塞啦,其实是加锁了。

请先 登录 后评论