为了账号安全,请及时绑定邮箱和手机立即绑定

springboot-mongodb如何确保如下情况没有脏读

springboot-mongodb如何确保如下情况没有脏读

神不在的星期二 2019-03-12 19:37:29
有A,B两个集合,进行以下事务:1.先查询A集合得到文档转化成java对象2.在内存中用java代码对对象进行修改后执行MongoTemplate的save操作3.最后在B集合中再进行一次update操作。以上过程中的疑惑在于,两个线程t1,t2同时进行完该事务的步骤1,进行更改后t1先写锁更改了文档,那么t2得到的数据就是脏数据,此时t1释放锁,t2执行save,数据库的数据就存在了问题,这样的情况该如何处理?目前我能想到的方法只有java的synchronized锁住这整个方法,但是在其他方法中对A集合查询仍然会出现相同的脏数据问题,所以想请教各位有什么好的建议,我是Android开发,刚刚入门服务器,麻烦方案解释的简单点哈,谢谢
查看完整描述

2 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

跟其他数据库一样,使用update方法,只更新你想更新的字段,而不是所有字段。使用updateFirstupdateMulti

查看完整回答
反对 回复 2019-03-12
?
HUH函数

TA贡献1836条经验 获得超4个赞

save这样粗暴地把所有字段更新进去,不但造成你说的问题,还会使每次参与更新的字段多于必要,造成不必要的服务器端压力和oplog压力。

查看完整回答
反对 回复 2019-03-12
  • 2 回答
  • 0 关注
  • 1296 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信