面试官问:select......for update会锁表还是锁行?
Java之间
共 1503字,需浏览 4分钟
· 2021-10-27
往期热门文章:
1、全员远程办公,半年入 1 亿美元:GitHub 的最大竞争对手上市了!
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/9f772ab060b2107bb6c08f2aa3105958/14d8c7757803380337cf96bcd8c33f00.webp)
结合一下实例验证
图一为第一个事务,并且没有提交事务 图二为第二个事务,去更新数据,被阻塞了 图三为第二个事务,长时间拿不到锁报错。
![](https://filescdn.proginn.com/e178d394197c1739e2922b4863b66ecb/70e5a103300ed9577f4d59cd1039da2e.webp)
![](https://filescdn.proginn.com/fc4ccea9e2123ab682ce1f05ff9b4190/69b544bcfc8194a1c80718200e112d56.webp)
![](https://filescdn.proginn.com/7ae1b15873ba07c098f937d291ce6115/05d5ae63554510d74402e1aceb97da92.webp)
![](https://filescdn.proginn.com/950e2e2a6752ecc05f7e58a28dc3cc67/2d0785aea6ee26c99fb8b8276fb4cb05.webp)
![](https://filescdn.proginn.com/721fe7e80cae52e98094a4c2a051c352/531e68ef3e541f239988c2e4a52794a4.webp)
![](https://filescdn.proginn.com/aed56ae6736b34c3e605544c77fce7f4/e52914709773cef62a57d31b97d0a49b.webp)
![](https://filescdn.proginn.com/01235d012e447916678f9f243012edfa/b96d8a687721c7afca11a355aed25324.webp)
![](https://filescdn.proginn.com/09840efe90e597197e4ebc2984975476/3d17662d196981df21f085d1419267e2.webp)
![](https://filescdn.proginn.com/fc3c1863572276b276df73172bcf82c9/3df1a680acf11aae4f64f2c30b84938e.webp)
![](https://filescdn.proginn.com/2d21fc68f97666f518165387f6281678/93c29d0da0131c2a48892198d99c4dd4.webp)
![](https://filescdn.proginn.com/696f339d941253980e0a594267c82b62/40e095fe9117ab99ca30f9b3fcd9c219.webp)
![](https://filescdn.proginn.com/63138fce91cd1998c434f604cb744c05/d6881d133b131f942eb10c27e3ecb314.webp)
![](https://filescdn.proginn.com/6ca76705bce81456ff6c1f7566c9bf23/8b8a48ca3a95037c62ee1f7d6acc4f50.webp)
结果:
select ..... for update
就会进行行锁。select ..... for update
就会进行锁表。感谢阅读,希望对你有所帮助 :) 来源:blog.csdn.net/qq_42956376/article/details/109544539
最近热文阅读:
1、全员远程办公,半年入 1 亿美元:GitHub 的最大竞争对手上市了! 2、面试官:Spring AOP、AspectJ、CGLIB 都是什么鬼?它们有什么关系? 3、10 个 VSCode 超级摸鱼神器,确定不试一下? 4、JMH + Arthas,性能监控的神器 5、MySQL 8.0 可以操作 JSON 了,牛逼 6、MySQL 用 limit 为什么会影响性能? 7、List中remove()方法的陷阱,被坑惨了! 8、7 种 Spring Boot 注入 Bean 的方式 9、再见MybatisPlus,阿里推出新ORM框架! 10、为什么不推荐使用BeanUtils属性转换工具 关注公众号,你想要的Java都在这里
评论