场景:
类似银行存取,增减账户余额,但是多了明细表,每次转账更新用户同一条数据记录,但是用户明细表一直递增信息记录,关键字段为当前余额(操作金额加上原余额得出)
问题:
更新同一条记录可以通过增加version字段解决高并发同时写的问题
但是明细表中先读取原先余额再写入新余额,这个怎么解决,怎么能让每次读出余额是最新的,写入明细之前余额不会被修改
4条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
Mr_Zouhm 2018-04-20 01:17最佳回答 专家已采纳这个是乐观锁,可以使用CAS原理,取出值后得到新值,然后插入的时候比较原值,如set count = 12 where count = 8,8是旧值,但这样容易出现ABA问题,所以需要配合你的版本version使用才能避免这个问题,即取值时拿到老的值和version,塞值时配合使用,如set count = 12,version=4 where count = 8 and version=3。希望能解决你的问题
采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
查看更多回答(3条)
报告相同问题?
提交
相关推荐 更多相似问题
- 2018-04-19 04:02回答 4 已采纳 这个是乐观锁,可以使用CAS原理,取出值后得到新值,然后插入的时候比较原值,如set count = 12 where count = 8,8是旧值,但这样容易出现ABA问题,所以需要配合你的版本ve
- 2019-11-12 11:29回答 2 已采纳 高并发只是增加了并行操作的可能性而已; 但是: 1.你不能保证你得方法是被同一个线程调用 2.你不能保证你的应用只部署一台机器 3.如果抢红包这个不用多线程,用户量一多,你的系统就挂了
- 2017-07-21 03:09回答 2 已采纳 建议在去获取序列号的时候加个锁
- 2020-12-14 21:24当多个写请求到数据库的时候,这时候需要对多张表进行插入,尤其一些表 达到每天千万+的存储,随着时间的积累,传统的同步写入数据的方式显然不可取,经过试验,通过异步插入的方式改善了许多,但与此同时,对读取...
- 2020-12-16 17:131、解决高并发 当客户端连接数达到峰值的时候,服务端对连接的维护与处理这里暂时不做讨论。当多个写请求到数据库的时候,这时候需要对多张表进行插入,尤其一些表 达到每天千万+的存储,随着时间的积累,传统的同步...
- 2019-04-29 15:59深夜程序猿的博客 一、网站应用背景 ...当问题的规模在经济条件下通过堆硬件的方式解决不了的时候,我们应该通过其他的思路去解决问题,互联网发展至今,已经提供了很多成熟的解决方案,但并不是都具有适用性,你...
- 2019-10-23 10:08回答 2 已采纳 就是加锁机制,你这个系统给学校老师使用的,并发量不会太大,使用synchronized就可以解决了
- 2017-12-01 14:31回答 2 已采纳 http://blog.csdn.net/will5451/article/details/71079668
- 2015-09-21 11:26回答 6 已采纳 高并发不是JAVA的专有的东西,是语言无关的广义的,为提供更好互联网服务而提出的概念。 举个极端的例子,就是100个人,1人分配1台web服务器, 那么服务器资源是他们独占的,他们不需要抢占服务器
- 2016-12-08 18:40研发之道的博客 一、海量数据的解决方案 1、缓存 数据量很大最直接的解决方案就是使用缓存,缓存就是将数据库中获取的结果暂时保存起来,在下次使用时无需重新到数据库中获取,这样可以大大降低数据库的压力。 缓存的使用方式...
- 2019-06-06 10:21四月天03的博客 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 水平切分...
- 2018-09-19 19:29KAIKAI_ING的博客 高并发的解决方案 1.应用和静态资源分离 刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片、视频、js、css和一些资源文件等,...
- 2017-10-15 08:04回答 7 已采纳 用一个任务队列保存所有任务,那么无论哪个线程拿到任务后将任务弹出队列,其他线程也就不会拿到重复任务,而且不需要去查询与修改状态。这样的同步队列可以自己去实现,也可以直接使用Concurrent包中提供
- 2015-01-28 03:31回答 2 已采纳 这个东西面试几句话怎么说清 推荐你看《大型网站系统与Java中间件实践》
- 2016-11-08 16:50回答 3 已采纳 首先要查看一下运营商那同时并发能有多少,这样它就是你的一个最大值 然后队列中就可以设置多个消费者client来从队列中拿消息,然后发送短信。 逐步调整消费者client的个数来测试达到的最大性能值
- 2017-02-28 11:19西召的博客 随着业务的不断丰富,高并发和海量数据的处理日益成为影响系统性能的重要问题。下面将提供一些针对并发问题和海量数据处理的解决方案。
- 2018-09-30 16:08水的精神的博客 开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能,当然,也要考...
- 2020-04-29 15:39零度念者的博客 对于一些互联网项目来说,企业为节省成本,一般会考虑将所有的数据都存储在一个数据库中,这个时候我们只需要考虑数据库优化、SQL优化、数据缓存、限流,消息队列、服务器性能等问题。 阿里巴巴《Java 开发手册》...
- 2016-01-09 22:40回答 4 已采纳 前端用ngnix做负载均衡,多台服务器,用mapredis缓存页面,而不是每次都查询。
- 2019-05-16 10:23深夜程序猿的博客 相信不少人会被这个问题困扰,分享大家一篇这样的文章,希望能够帮到你! 一、秒杀业务为什么难做? 1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息); 2)微博系统,每个人...
- 没有解决我的问题, 去提问