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

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

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

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

使用悲观锁

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

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

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

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

使用乐观锁

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

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

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

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

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

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

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

暂无图片 评论
暂无图片 有用 2
打赏 0
猫瞳映月
2022-12-18
你们为什么都要复制粘贴题主的问题呢?不知道就不要回答呗
回答交流
Markdown


请输入正文
提交
相关推荐
MySQL 存储过程,里面while循环。大概循环13次。执行到最后一次循环的时候报错2013 lost connection to mysql server during query,怎么处理?
回答 1
增加连接超时时间:在存储过程中,可以尝试增加连接超时的时间。你可以使用SET@@GLOBAL.waittimeout语句来增加全局的连接超时时间,或者使用SET@@SESSION.waittimeou
mysql迁移不停机,有几种方式呢?
回答 1
已采纳
用主从吧,其他的也是类似
sync_binlog 参数
回答 2
已采纳
第一个是INNODB刷新日志的方式类似于ORACLEREDOLGWR行为控制.第二个是同步BINLOG方式MYSQL和ORACLE都不是事务提交后,把日志写到磁盘上的.日志是记录数据变动,那怕事务还没
MySQL并行复制
回答 1
已采纳
B、D
MySQL新建一个触发器报错:1064
回答 1
这个报语法错误。ifthen这里不对。另外推荐不要使用触发器。
analyze会加啥锁?
回答 1
analyze会删除表缓存中的表定义信息,需要做flushtable操作,如果当前有查询或事务在表上,analyze有可能会被堵塞,继而堵塞后续的操作,ananlyze本身执行很快。
模拟网络延迟造成的io线程延迟,用tc模拟,从库上设置的,没有达到效果
回答 1
你提到的命令tcqdiscadddevens192rootnetemdelay5000ms应该在从库上执行。这个命令使用的是trafficcontrol(tc)工具,它在从库的网络接口ens192上添
OLAP系统适用下面哪些场景:
回答 2
已采纳
A报表系统B数据仓库D多维分析,数据挖掘系统
如何配置my.cnf才能不用-s ,通过-h就能登录的?
回答 1
要使用mysql客户端的h选项连接MySQL数据库,不需要做额外的配置。MySQL提供了两种连接方式:本地连接和远程连接;连接时,指定S是通过本地套接字进行连接,也就是本地连接;指定h是以远程的方式进
mysql8.0.23升级
回答 2
已采纳
可以先原地升级从库,然后主从切换