计算引擎用时1700ms,真正计算代码用时41ms,其余时间都在查询,插入耗时,怎么优化??

cookqq 发布于 2015/06/27 16:41
阅读 229
收藏 0

计算引擎用时1700ms,真正计算代码用时41ms,其余时间都在查询,插入耗时,怎么优化??

计算过程:

1、首先提交到mq    5ms

 2 、消费mq任务  151

3、mysql根据id查询  31ms

4、mongodb插入一条记录 31ms

5、mysql获取公式信息   94ms

6、获取计算过程需要变量的值 682ms
7、计算上下文设置    

8、真正计算代码 41ms

9、计算结果插入到mysql 76ms

10、mysql查询这个公式被那些公式引用  515ms

整个过程还是用mongodb插入了12条记录

上面的过程是一个公式的计算过程。当有10000个同时来到的时候,开了10个线程、计算过程大概一个小时左右。

以上过程怎么优化啊??使计算级别搞到秒级???




加载中
0
itkang
itkang
实现把需要的数据放到缓存,从缓存取要比从数据库快多了
cookqq
cookqq
回复 @itkang : 我这查询根据id查询大概2-5ms,其中有一个查询sql,用到了正则,查询一个sql用了500ms,占整个计算过程1/3时间。正则查询用时这么就,正常吗???
itkang
itkang
回复 @cookqq : 你的计算并没多少时间,主要是你查询相关的数据浪费的时间,如果是无状态的数据,建议放到内存式缓存,回比从数据库查询快的多得多,再加上如果你数据库没有经过性能优化,也会产生很大的性能浪费的
cookqq
cookqq
用户提交一个计算任务,经过2s得到相应,其实真正计算代码执行41ms,大部分时间都在查询和插入数据。像这种查询优化也不能有太大提升,10000个计算任务,单个线程做很慢。是不是可以考虑hadoop或者spark大数据计算思想。 ​
0
梦想岛
梦想岛
基本上所有的程序瓶颈都在处理DB方面。除非你有强大的dba。
cookqq
cookqq
用户提交一个计算任务,经过2s得到相应,其实真正计算代码执行41ms,大部分时间都在查询和插入数据。像这种查询优化也不能有太大提升,10000个计算任务,单个线程做很慢。是不是可以考虑hadoop或者spark大数据计算思想。 ​
0
悠悠然然
悠悠然然
这里提供的信息不够判断
悠悠然然
悠悠然然
回复 @cookqq : 正则匹配肯定要慢的。
cookqq
cookqq
回复 @悠悠然然 : 我这查询根据id查询大概2-5ms,其中有一个查询sql,用到了正则,查询一个sql用了500ms,占整个计算过程1/3时间。正则查询用时这么就,正常吗???
悠悠然然
悠悠然然
回复 @cookqq : 没有什么是不能提升的。 比如查询是不是会有重复的?重复的用缓冲就可以省下大量的时间。 比如插入可不可以批量插入?如果可以批量插入就可以省下大量的时间。 有的人感觉已经无可优化,那就是无解;有的人觉得有太多优化,那就可以优化许多。 就你这个问题,呵呵,不用引入啥新方案就可以优化1-2个数量级。
cookqq
cookqq
用户提交一个计算任务,经过2s得到相应,其实真正计算代码执行41ms,大部分时间都在查询和插入数据。像这种查询优化也不能有太大提升,10000个计算任务,单个线程做很慢。是不是可以考虑hadoop或者spark大数据计算思想。 ​
悠悠然然
悠悠然然
具体数据及业务说清楚,应该easy
返回顶部
顶部