问题描述如题,如何解决CPU占用过高的问题。现在有一个项目需要对大量数据进行非常频繁的处理,这个项目是合作项目,合作程序每隔10秒钟向数据库中写入大约1000条数据,但是他们写入的数据无法直接使用。我方程序使用定时任务每隔10秒钟访问数据库,获取新增的数据并进行解析、计算、另存、并操作关联数据表,每次大约执行10条sql语句。但是这种处理方式大量占用数据库服务器CPU,客户并不打算升级器,后续每次新增的数据量还会增长,求一个有效的优化方案。感激不尽!问题补充1.用户要求使用折线图实时展示最新数据,就是说每次出现新数据就必须立刻反应在折线图上,他们最低的要求是每10秒刷新一次。2.合作程序是以前的程序,我们没办法调整对方的程序,只能把处理放在我方。
2 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
既然他们写入的数据无法直接使用,可以考虑用MQ代替写数据库,比如,他们通过MQ发送1000条数据,你们的程序从MQ中取得数据,处理后再写入数据库。比如RabbitMQ。
沧海一幻觉
TA贡献1824条经验 获得超5个赞
能否对方的数据做预处理,然后在写入库中,这样咱们这边能直接使用?。。。能否让对方写入消息队列(RabbitMQ),然后对数据做完处理,在存库,然后就可以直接使用。如果数据量比较小,能否直接存储原始数据,每次请求折线图,实时处理数据后再返回。如果数据量很大,能否将数据划分成可变的(比如平均值)和不可变的(昨天的生产量),然后不可变的直接存库,可变的每次实时计算。按照你现在的流程,好像没啥优化的余地了,最多就是数据库层面的一些优化。。。如果你找到好的解决方案,给我回复一下,我也学习一下。
添加回答
举报
0/150
提交
取消