84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
1.现在业务逻辑上是先将一条数据更新状态为2,然后统计状态为2的数据。由于MySQL主从延迟,导致数据有时准确,有时不准确2.更新数据和统计数据在逻辑上是一起的,无法分开。比如我刚存了钱,数据表字段状态改为2。那么我现在需要立即sum一下,用户总共的钱数,保证用户总钱数的正确。3.有什么解决方案?逻辑上有什么好的想法可以分开吗?既保证sum正确,又保证当时状态下用户的中钱数?4.拜托各位大神
光阴似箭催人老,日月如移越少年。
先更新到数据库,后更新缓存。读的时候,先读缓存,缓存没有,再读数据库
直接读取主库呗
建议先描述你要实现的需求是什么;然后你是怎么实现的;最后是遇到的是什么问题。
我总结的几点办法:
如上所述,增加缓冲,或者采用多住多从的数据库形式,但这个无法根本上解决此类问题。因为主从延迟的问题不可能消灭。
如上所述,直接读主库。
这个主要是业务逻辑问题,
技术上可以采用乐观锁的方式解决。
可以给数据库加事务、回滚。
数据冗余方式,不采用每天更新数据再统计更新后的数据方式,直接给user添加balance字段,每次更新这个字段即可,配合乐观锁和事务,完美解决。
用户数据一多,sum的性能问题会越来越突出
不当之处还请大神指教
主从延迟,数据有时间戳吗,从机上时间戳超过主从延迟的数据才能确保是一致的,不一定是最新的,意义不大。主从延迟只是做灾备,万一数据员手贱,把数据删了,那么可以从延迟从机中恢复。
1.你要解决的首先是为什么会主从延时,根据楼主的描述来看,你的数据库主从经常延时,那么是否主从服务器性能有问题?是否从库数据库服务器硬件性能跟不上主库的写入,如果是这样的话,最简单的方法是提升下从库配置
2.你的数据库是否有多个库同时使用,这样会导致从库同步多个库,如果是,可以考虑分离来降低从库同步压力
3.mysql数据库主从模式有 [ 半同步模式 ],会确保主库的binlog传输到从库之后才返回给客户端数据,保证主从数据的一致性,不过这样的话对主库性能有一定消耗
4.mysql从库可以进行 [ 并行同步 ],也就是多线程同步,mysql版本需要>=5.6,5.6的库是基于库并行同步,5.7基于事务并行同步
先更新到数据库,后更新缓存。
读的时候,先读缓存,缓存没有,再读数据库
直接读取主库呗
建议先描述你要实现的需求是什么;
然后你是怎么实现的;
最后是遇到的是什么问题。
我总结的几点办法:
如上所述,增加缓冲,或者采用多住多从的数据库形式,但这个无法根本上解决此类问题。因为主从延迟的问题不可能消灭。
如上所述,直接读主库。
这个主要是业务逻辑问题,
技术上可以采用乐观锁的方式解决。
可以给数据库加事务、回滚。
数据冗余方式,不采用每天更新数据再统计更新后的数据方式,直接给user添加balance字段,每次更新这个字段即可,配合乐观锁和事务,完美解决。
用户数据一多,sum的性能问题会越来越突出
不当之处还请大神指教
主从延迟,数据有时间戳吗,从机上时间戳超过主从延迟的数据才能确保是一致的,不一定是最新的,意义不大。主从延迟只是做灾备,万一数据员手贱,把数据删了,那么可以从延迟从机中恢复。
1.你要解决的首先是为什么会主从延时,根据楼主的描述来看,你的数据库主从经常延时,那么是否主从服务器性能有问题?是否从库数据库服务器硬件性能跟不上主库的写入,如果是这样的话,最简单的方法是提升下从库配置
2.你的数据库是否有多个库同时使用,这样会导致从库同步多个库,如果是,可以考虑分离来降低从库同步压力
3.mysql数据库主从模式有 [ 半同步模式 ],会确保主库的binlog传输到从库之后才返回给客户端数据,保证主从数据的一致性,不过这样的话对主库性能有一定消耗
4.mysql从库可以进行 [ 并行同步 ],也就是多线程同步,mysql版本需要>=5.6,5.6的库是基于库并行同步,5.7基于事务并行同步