暂无图片
在高并发情况下,如何做到安全的修改同一行数据?
我来答
分享
T
Ty3306
2022-12-18
在高并发情况下,如何做到安全的修改同一行数据?

在高并发情况下,如何做到安全的修改同一行数据?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
suger

要安全的修改同一行数据,就要保证一个线程在修改时其它线程无法更新这行记录。一般有悲观锁和乐观锁两种方案~

使用悲观锁

悲观锁思想就是,当前线程要进来修改数据时,别的线程都得拒之门外~

比如,可以使用select…for update ~

select * from User where name=‘jay’ for update

以上这条sql语句会锁定了User表中所有符合检索条件(name=‘jay’)的记录。本次事务提交之前,别的线程都无法修改这些记录。

使用乐观锁

乐观锁思想就是,有线程过来,先放过去修改,如果看到别的线程没修改过,就可以修改成功,如果别的线程修改过,就修改失败或者重试。实现方式:乐观锁一般会使用版本号机制或CAS算法实现。

暂无图片 评论
暂无图片 有用 3
暂无图片
刘贵宾
2022-12-18
高并发情况下,如何做到安全的修改同一行数据
2022-12-18
使用锁用于隔离和调度重叠的事务、管理数据库内容。
游湖

高并发情况下,如何做到安全的修改同一行数据

暂无图片 评论
暂无图片 有用 5
游湖
答主
2022-12-18
高并发情况下,如何做到安全的修改同一行数据
lelepapa
2022-12-18
高并发情况下,如何做到安全的修改同一行数据
dyf1
2022-12-18
高并发情况下,如何做到安全的修改同一行数据
展开全部评论(1条)
L
lelepapa

高并发情况下,如何做到安全的修改同一行数据

暂无图片 评论
暂无图片 有用 3
dyf1
2022-12-18
高并发情况下,如何做到安全的修改同一行数据
D
dyf1

高并发情况下,如何做到安全的修改同一行数据

暂无图片 评论
暂无图片 有用 2
猫瞳映月
2022-12-18
你们为什么都要复制粘贴题主的问题呢?不知道就不要回答呗
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏