免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5538 | 回复: 8
打印 上一主题 下一主题

update的并发是否会产生脏数据,是否需要select for update锁? [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-23 16:59 |只看该作者 |倒序浏览
比如,表名A,字段名为 number,如下的SQL语句:


语句1:update A set number=number+ 5 where id=1;
语句2:update A set number=number+ 7 where id=1;

假设这两条SQL语句同时被mysql执行,id=1的记录中number字段的原始值为 10,那么是否有可能出现这种情况:

语句1和2因为同时执行,他们得到的number的值都是10,都是在10的基础上分别加5和7,导致最终number被更新为15或17,而不是22?

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
2 [报告]
发表于 2016-05-23 21:32 |只看该作者
求明白的同学 帮忙释疑

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
3 [报告]
发表于 2016-05-24 10:36 |只看该作者
本帖最后由 action08 于 2016-05-24 10:37 编辑

看情况
正确的逻辑

select ---- lock -----(need seletc here? OR)----  update -----unlock

情况2
如果表引擎有问题不支持,就直接锁表了



情况3
数据上层的业务开发,也可以承担一些责任,不要总是把事情丢给mysql

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
4 [报告]
发表于 2016-05-24 11:09 |只看该作者
多谢,表引擎是 InnoDB,支持行锁;

所以我想了解的是在这种引擎下,即使不加 select for update 行锁,并发时的

update  number=number+variable  where id=10; (id是主键索引,variable是某个确定的变量),这种情况下,mysql本身会保证number字段不出现脏数据么?

回复 3# action08


   

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
5 [报告]
发表于 2016-05-24 17:38 |只看该作者
求释疑。。。

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
6 [报告]
发表于 2016-05-25 09:54 |只看该作者
不加锁,数据库默认不能保证

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
7 [报告]
发表于 2016-05-25 10:04 |只看该作者
回复 6# action08

多谢回复,您能帮忙贴下参考文献或者相关的官方文档么?


   

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
8 [报告]
发表于 2016-05-27 20:57 |只看该作者
本帖最后由 action08 于 2016-05-27 21:11 编辑

回复 7# glq2000


    对不起,不能提供,因为我做这个完全凭兴趣和业余,
而你是在工作

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
9 [报告]
发表于 2016-05-30 16:29 |只看该作者
求释疑~~~~~~~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP