面试官:select......for update会锁表还是锁行?
开发者全社区
共 1613字,需浏览 4分钟
· 2021-11-19
来自:blog.csdn.net/qq_42956376/article/details/109544539
select查询语句是不会加锁的,但是 select .......for update
除了有查询的作用外,还会加锁呢,而且它是悲观锁。那么它加的是行锁还是表锁,这就要看是不是用了索引/主键。 没用索引/主键的话就是表锁,否则就是是行锁。 验证:
建表sql //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代表自动提交。另外关注公号“互联网架构师”,回复关键词“2T”,送你一份阿里内部面试资料!结合一下实例验证
实例1: 使用主键id为条件去查询,然后开启另一个事务去更新数据,更新被阻塞,加锁了,锁定要查询的id为1的行数据。 实例2:
我们在开启一个事务对另一条id为2的数据进行更新,另外关注公号“互联网架构师”,回复关键词“2T”,送你一份阿里内部面试资料! 一开始的创建表就age创建了唯一索引。 实例4:
使用普通的字段code去操作 另一个事务我去更新另外一条数据,如果我更新成功了,就是锁行,失败了就是锁表。另外关注公号“互联网架构师”,回复关键词“2T”,送你一份阿里内部面试资料! 结果:
如果查询条件用了索引/主键,那么 select ..... for update
就会进行行锁。如果是普通字段(没有索引/主键),那么 select ..... for update
就会进行锁表。
评论
5000w+ 的大表如何拆?亿级别大表拆分实战复盘
前言笔者是在两年前接手公司的财务系统的开发和维护工作。在系统移交的初期,笔者和团队就发现,系统内有一张5000W+的大表。跟踪代码发现,该表是用于存储资金流水的表格,关联着众多功能点,同时也有众多的下游系统在使用这张表的数据。进一步的观察发现,这张表还在以每月600W+的数据持续增长,也就是说,不超
码农编程进阶笔记
0
美团还是快手,选个offer真纠结!
JavaGuide官方网站:javaguide.cn当面临多个还不错的 offer 时,做起选择是真心让人纠结,真心祝福各位都能有这种纠结的时候。纠结是正常的,毕竟选择一个 offer 的考虑因素太多了,并不仅仅是说谁给的钱多一点就跟谁干。如果真这么简单的话,那也就没啥可纠结的了。这篇文章我会结合一
JavaGuide
0
Vite 4.3 为何性能爆表?
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群Vite 4.3 相比 Vite 4.2 取得了惊人的性能提升,下面和大家分享一下 Vite 4.3 性能大幅提升的幕后技术细节,深度阅读,全程高能
程序员成长指北
0
李彦宏:开源大模型不如闭源,后者会持续领先;周鸿祎:“开源不如闭源” 的言论是胡说八道
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁0、李彦宏:开源大模型不如闭源,后者会持续领先当今
源码共读
0
分库分表,可能真的要退出历史舞台了!
来源:https://www.jianshu.com/p/9131edd8fd2c👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦,
小哈学Java
1
面试官:在原生input上面使用v-model和组件上面使用有什么区别?
前言面试官:vue3的v-model都用过吧,来讲讲。粉丝:v-model其实就是一个语法糖,在编译时v-model会被编译成:modelValue属性和@update:modelValue事件。一般在子组件中定义一个名为modelValue的props来接收父组件v-model传递的值,然后当子组
高级前端进阶
0
面试官:电商库存扣减如何设计?如何防止超卖?
来源:my.oschina.net/xiaolyuh/blog/1615639👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示
小哈学Java
0
面试官:只知道v-model是modelValue语法糖,那你可以走了
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群前言我们每天都在用v-model,并且大家都知道在vue3中v-model是:modelValue和@update:modelValue的语法糖。那你知道v-model指令是如何变成组件上的modelValue属性和@update:
前端Q
1