社区
Web 开发
帖子详情
MYSQL select时锁定记录问题
土豆是我的最爱
2020-08-17 04:14:25
在使用SQL时,大都会遇到这样的问题,你Update一条记录时,需要通过Select来检索出其值或条件,然后在通过这个值来执行修改操作。
但当以上操作放到多线程中并发处理时会出现问题:某线程select了一条记录但还没来得及update时,另一个线程仍然可能会进来select到同一条记录。
请问应该符合解决
...全文
2302
3
打赏
收藏
MYSQL select时锁定记录问题
在使用SQL时,大都会遇到这样的问题,你Update一条记录时,需要通过Select来检索出其值或条件,然后在通过这个值来执行修改操作。 但当以上操作放到多线程中并发处理时会出现问题:某线程select了一条记录但还没来得及update时,另一个线程仍然可能会进来select到同一条记录。 请问应该符合解决
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kris2088
2020-08-18
打赏
举报
回复
每条记录加一个版本号,防止脏数据是个办法
亦夜
2020-08-17
打赏
举报
回复
其实没太明白你的意思,你想通过select出来的值来进行更新,但是你在更新操作还没成功的同时又进行了select操作,那么这有什么问题呢,写和读着两者并不冲突,如果你是希望第二个读 读取到的是前一个写操作后的最新值,那你完全可以在执行update的时候锁住当前表,但是如果你的并发较高,这不是可取的办法,或者你可以通过乐观锁给表增加版本号,写操作会导致版本增加,读操作可进行对比版本是否变化,来判断是否是最新数据,但是这有依旧无法第一时间获取到最新数据,可以通过让写操作返回值的方式来判断数据是否更新来进行查询
快叫我java小菜鸟
2020-08-17
打赏
举报
回复
配置数据库事务的隔离级别为SERIALIZABLE,同时为所有数据库操作开启事务
mysql
跳过
锁定
记录
_
MYSQL
select
时
锁定
记录
问题
本文探讨了在
MySQL
中使用行级
锁定
避免并发插入导致的重复
记录
问题
。通过案例分析,指出非唯一索引无法有效
锁定
记录
,而建立唯一索引配合行级
锁定
可以解决并发插入的冲突。同
时
,强调在并发环境下,不同线程可能因同一
时
刻未检测到
记录
而同
时
插入,导致重复。文章通过存储过程和并发测试工具sqlquerystress进行了实验验证。
mysql
中 insert …
select
…带来的死锁
问题
本文探讨了在
MySQL
数据库中使用insert...
select
...操作
时
可能出现的
记录
锁定
问题
,特别是对于从Oracle迁移过来的应用,以及如何通过使用
select
...intooutfile和loaddatainfile的组合来避免这些
问题
,提高数据操作效率。
Web 开发
81,110
社区成员
341,727
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章