问题描述
大数据量下如何根据B表更新A表数据?
问题出现的环境背景及自己尝试过哪些方法
背景如下:
A表为工作量表,
B表为积分表,
公式为 积分 = 工作量 * 系数
当系数发生变化时,需要根据工作量重算积分。
我能想到的方案:
1.将积分和工作量分别取出,再逐行更新,这样十几万的数据量下可能会出现性能问题。
2.做一个联表更新sql,将系数传入。但是如果以后做拆分,这样的sql会比较难维护。
3.将方案1中的sql语句拼起来,每100条做一次提交。但是很难保证失败的情况下数据的一致性。
4.将方案1做成异步场景,然后引入失败重试机制。这样的话开发成本较大。
相关代码
场景是:
table A
id col1 col2
1 A1 A2
table B
id cola colb
1 B1 B2
公式为:
B1 = A1 * c
B2 =A2 * d
(c,d均为传入的常数)
如何最优的做数据的级联更新。
你期待的结果是什么?实际看到的错误信息又是什么?
有没有什么比较好的方案?### 问题描述
题主你好, 我提供一点自己的思路.
那么,首先写几个假设:
这个场景是不是有点熟悉了?不妨参考redis的rehash过程试一下?
在系数更改后
思路其实就是,把瞬间的计算量分为两部分:
直到完成.