面试官问:select......for update会锁表还是锁行?
Java后端技术
共 1446字,需浏览 3分钟
· 2021-10-27
1、支付宝员工因绩效3.25B被辞退,员工告上法院,结果来了! 2、Spring Boot + GraphQL 才是 API 的未来! 3、全员远程办公,半年入 1 亿美元:GitHub 的最大竞争对手上市了! 4、聊一聊Java 泛型通配符 T,E,K,V,? 5、各大公司程序员的工位,你中意哪一款?
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/dd95080d20a393c2ea37cf4f6edb29da/3bba8861ca5b60de606278847c12bea2.webp)
结合一下实例验证
图一为第一个事务,并且没有提交事务 图二为第二个事务,去更新数据,被阻塞了 图三为第二个事务,长时间拿不到锁报错。
![](https://filescdn.proginn.com/0638af26e1af1f300988dd48f34983f3/1d31af4cfeb720ae12de31593e702dcb.webp)
![](https://filescdn.proginn.com/0a0c3bf57febd985f463bbcce552eea0/5ea55ed1ecc58aba3ff049e373a355b7.webp)
![](https://filescdn.proginn.com/241ace8c7eb7d82248cff06ab3842cbd/7c7b9fb6dc2aade9f90e8ff502161404.webp)
![](https://filescdn.proginn.com/92505659ec01f6ad13f5fc5a515ffbcb/f5fe2b7072d8b7044c8dfafec11eb366.webp)
![](https://filescdn.proginn.com/909379bd4f570ae04171d2783ef71693/2f8c4724c64d9827f30fee0ecc1cc769.webp)
![](https://filescdn.proginn.com/eea9bcff2ed84a6b0ac2c774d3e128f0/90f3058faefcefadd415236ff2de5aa5.webp)
![](https://filescdn.proginn.com/414ac4e72efbf0b19c041601c94c797a/23f36d92b5d05caa7aefa9da701b668e.webp)
![](https://filescdn.proginn.com/a03534857697482610105a99552851c0/17f55e462ff994b8aabce8f52bd07012.webp)
![](https://filescdn.proginn.com/df094f6870b9710d032e07001f281db9/55686d6bfff30bd2d081444d281413ad.webp)
![](https://filescdn.proginn.com/3d74793884afc74f9580a19f07cf2092/95e929ab3baf442b334b6ed376a2c47f.webp)
![](https://filescdn.proginn.com/2a85d2612819a82f213904ec30aebe20/a2b97883b4bba66f769ceaeb3b66ffeb.webp)
![](https://filescdn.proginn.com/61efa0fea5c66ce39c0f08cac69009f1/a4b9277ff96b6452e1660ecc413cd9f1.webp)
![](https://filescdn.proginn.com/33bf8681aa4fe7ccc90bebdcd22cb4d1/c5877620a028d69c411d8578c25e056d.webp)
结果:
select ..... for update
就会进行行锁。select ..... for update
就会进行锁表。感谢阅读,希望对你有所帮助 :) 来源:blog.csdn.net/qq_42956376/article/details/109544539
往期热门文章:
1、《历史文章分类导读列表!精选优秀博文都在这里了!》 2、用 Java 爬小姐姐图片,这个厉害了。。。 3、消息幂等(去重)通用解决方案,真顶! 4、从MySQL 5.6升级到8.0,Facebook付出了惨痛代价…… 5、当 Transactional 碰到锁,有个大坑! 6、横空出世,比Visio快10倍的画图工具来了。 7、惊呆了,Spring中竟然有12种定义bean的方法 8、代码写的垃圾被嫌弃? 9、牛逼!SpringBoot+Vue企业级支付系统!附源码! 10、你真的会写for循环吗?来看看这些常见的for循环优化方式
评论