11 回答
TA贡献2003条经验 获得超2个赞
这个需求仅仅是基于数据库中现有的记录来计算这几个冗余字段并更新到会员卡表?不用管以后发生新的消费时同步更新这些冗余字段?
如果是这样,那简单啊。性能差也不是问题,找数据库压力小的时候,一批批慢慢跑嘛,总能跑完的。
其实更大的问题是,这些中途增加的冗余字段的数据初始化搞定以后,怎样才能伴随这新的消费发生而同步更新的问题。这才是要命的大问题。
TA贡献1827条经验 获得超9个赞
会员卡700万的这种软件,确实是大恩了... 自己不行就找个行的呗,反正不差钱。
1、上策,找个行的。
2、中策,清理过期数据,升级硬件
3、下策,自己慢慢玩,慢慢优化。
TA贡献1802条经验 获得超4个赞
@Mr.落叶: 技术债务都能短时间解决的话,那就不叫技术债务了。
谁不希望1小时解决问题啊,问题是问题就是需要几个月或者几年才能解决的咋办?
先升级硬件,拖一拖,然后就拖成技术债务了,几乎99%的人不会想着如何花时间做优化,而不是增加功能的。
如果给你两个选择
一个月解决问题费用10万,
一天解决问题费用100万。
你会选择哪个?
TA贡献1802条经验 获得超10个赞
洗数据肯定会对db造成一定压力的,但不建议你在一个存储过程中搞完,你这样搞可能会把正常业务给完全拖跪掉
正常的搞法是你前面通过分页方式抽取卡id信息,通过程序一个个的对卡的数据进行查询和更新,这种虽然看起来耗时更长,但对db压力是最小的了
TA贡献1818条经验 获得超7个赞
你说得对,我现在是备份的一个测试数据库,就是想看有没有办法把这些数据控制在两个小时内搞完,正式的可以等凌晨的时候批量更新了,那时候基本上没人使用,影响不是特别大
TA贡献1859条经验 获得超6个赞
@Mr.落叶: 我们这边有些类似的数据变化就是采用我说的这种方式,mysql数据库,洗完几千万数据也就2个多小时(而且还是在线)。
这块你可以估一下,按照我的做法只要每秒能够处理掉1k行数据2小时足够了,这块你只要确保填充几个字段的查询语句速度快,问题不大的。同时你可以在部署一个这样的程序后看下db压力,如果不大的话可以再部署一个加快处理速度(需要区分不同程序处理的数据,比如简单的卡号是否是偶数)
TA贡献2012条经验 获得超12个赞
update MemberShipCards A set A.总消费金额=sum(money) from MemberConsumePayments p inner join MemberConsums c
on p.ConsumeId=c.Id
inner join MemberPayment m on p.PaymentId=m.Id where c.status=1 and m.paymenttype in(1,3,4,6,8) and c.memberCardid=A.xxxx
语法可能有误,大体这样,供参考
- 11 回答
- 0 关注
- 499 浏览
添加回答
举报