如何解决并发修改 MySQL 一条记录的问题?

2016-03-06 21:22:52 +08:00
 tanteng

比如一条 MySQL 记录,可能并发同时去修改这条记录,假设是把一个字段的值从 0 变为 1 ,理论上应该只有一个是修改成功的,这种场景一般是怎么处理呢?

最好有伪代码讲讲这个问题。

4270 次点击
所在节点    MySQL
7 条回复
akira
2016-03-06 23:34:02 +08:00
1.事务,这个没什么好说的吧。。

2.丢一个地方集中处理。借助消息或者别的,从并行改成串行。
beneo
2016-03-07 09:36:39 +08:00
乐观锁?
jziwenchen
2016-03-07 09:53:54 +08:00
innodb 都是行锁 每次修改数据 都会有排它锁. 没弄明白你问题的场景... 能补述下吗
jziwenchen
2016-03-07 09:55:17 +08:00
并且 MySQL 可以 手动的 锁表 lock table / unlock table . 并且分表 二条数据可以打到不同表去 ,所以 你业务场景是什么?
tanteng
2016-03-07 10:31:17 +08:00
@jziwenchen 比如两个人同时打开了一个页面,这个页面上有个操作是改变一条记录的状态,可能两个人会去同时操作,这个时候要怎么处理。
gdtv
2016-03-07 16:59:40 +08:00
1 楼已经说得很清楚了
realpg
2016-03-25 09:44:57 +08:00
@tanteng 你想多了,两个人微秒级同时操作?总有先后顺序的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/261536

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX