面试官问:select......for update会锁表还是锁行?
今日推荐 扔掉 Postman,一个工具全部搞定,真香! 为啥查询那么慢? 还在直接用JWT做鉴权?JJWT真香 推荐 15 款常用开发工具 干掉 navicat:这款 DB 管理工具才是y(永)y(远)d(的)s(神)
select .......for update
除了有查询的作用外,还会加锁呢,而且它是悲观锁。验证:
//id为主键
//name 为唯一索引
CREATE TABLE `user` (
`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
`name` VARCHAR ( 255 ) DEFAULT NULL,
`age` INT ( 11 ) DEFAULT NULL,
`code` VARCHAR ( 255 ) DEFAULT NULL,
PRIMARY KEY ( `id` ),
KEY `idx_age` ( `age` ) USING BTREE
) ENGINE = INNODB AUTO_INCREMENT = 1570068 DEFAULT CHARSET = utf8
set @@autocommit=0;
设置为手动提交。0代表手动提交,1代表自动提交。![](https://filescdn.proginn.com/6857a34e95cd146a44a49d812a956f46/c963e49dd8e5b9605d61ed081314152b.webp)
结合一下实例验证
图一为第一个事务,并且没有提交事务 图二为第二个事务,去更新数据,被阻塞了 图三为第二个事务,长时间拿不到锁报错。
![](https://filescdn.proginn.com/f5161d727f188c4a9fb25f92dca04f1c/eaaa624bb083a61245b4825a2a4d6b09.webp)
![](https://filescdn.proginn.com/9c4446c538855d0a31787dbc6384f131/5608dd9dc43a21fbc36dfd8aa09ef63c.webp)
![](https://filescdn.proginn.com/04260591da1c022c9b6c67cde03432d8/b3eba98a3ab5990d153072d6b8742847.webp)
![](https://filescdn.proginn.com/021cea31908353d4c2d4c7e467de3aea/9aa33bff01fcb8b339687c835180cd81.webp)
![](https://filescdn.proginn.com/8881b477ced3d166c2b247642db3d9e4/3db1b016b61da0308df7fa5dadf9e004.webp)
![](https://filescdn.proginn.com/ecbe32e43f2b8019fad241a664d41f0d/b5d6af0f927824eebc3ca87520395aa8.webp)
![](https://filescdn.proginn.com/588ff773c54ed09b2c690f0ea5b767f7/29d7a50776452e10d0138dbd7cb05f85.webp)
![](https://filescdn.proginn.com/198b0b167153c5eab886d2b5caf5fc8f/4e1458a7faf32db98359443815564838.webp)
![](https://filescdn.proginn.com/9678c9f5496c2e6068038c766fa8faef/1156921026db3ad17b1f918d1fa7c0e1.webp)
![](https://filescdn.proginn.com/753d0d7aa552bcfda08024c5a5e9994c/45c452beca6a23f76c5c3a3496c8c498.webp)
![](https://filescdn.proginn.com/a9386c27c410be8cb863c91c8c4a7dcd/b0c13aa11ea93ecbf04fafccf81009e7.webp)
![](https://filescdn.proginn.com/cde741d067b77fff39426e78ddbede27/5f705fa4c022b8cb0dafb15a231d0cb3.webp)
![](https://filescdn.proginn.com/d12b49ff0b9d09ee40d9bb1c7e590f3e/03d15e131802489054230977c419bef7.webp)
结果:
select ..... for update
就会进行行锁。select ..... for update
就会进行锁表。感谢阅读,希望对你有所帮助 :) 来源:blog.csdn.net/qq_42956376/article/details/109544539
推荐文章
1、一款高颜值的 SpringBoot+JPA 博客项目 2、超优 Vue+Element+Spring 中后端解决方案 3、推荐几个支付项目! 4、推荐一个 Java 企业信息化系统 5、一款基于 Spring Boot 的现代化社区(论坛/问答/社交网络/博客)
评论