QUANTAXIS查询优化: 如何提升一倍的全市场查询速度

前排先打广告:
QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案. 我们通过高度解耦的模块化以及标准化协议,可以快速的实现面向场景的定制化解决方案.QUANTAXIS是一个渐进式的开放式框架,你可以根据自己的需要,引入自己的数据,分析方案,可视化过程等,也可以通过RESTful接口,快速实现多人局域网/广域网内的协作

QUANTAXIS-small.png

这段时间在进行全市场选股策略,通过对于mongo的监测, 认为查询速度远远没有达到硬件瓶颈, 于是开始思考如何优化:

在1.0.24版本以前, QUANTAXIS是这样对于全市场进行查询的:

  1. 对于单个股票写查询语句
  2. for循环进行多个股票代码的遍历
    3.返回结果
查询的时候的数据库监控

这是查询的时候的数据库监控

通过对于net out 这一项的观察, 我们发现数据的传输速度只有10 mb/s 这个是非常糟糕的, 毕竟我这个网卡是Killer千兆网卡,socket内循环速度不应该只有10mb/s

考虑以下两种优化办法:

  1. 进行异步操作, 对于mongodb 可用的库有motor 但是还没有完全摸透

  2. 减少查询次数,让mongodb自行优化查询语句:

所以就有了这个最偷懒的做法:

    cursor = collections.find({
        'code': {'$in': code}, "time_stamp": {
            "$gte": QA_util_time_stamp(start),
            "$lte": QA_util_time_stamp(end)
        }, 'type': frequence
    })

让我们来看一下效果提升:


优化后

我们可以观察到 优化过后,查询的传输速度达到了30mb/s左右

再看一下任务管理器:


任务管理器

mongo向外的传输速度确实达到了34mb/s左右

以上就是1.0.24 对于QUANTAXIS的优化, 虽然很简单的改进,但是确实优化的全市场查询的速度

更多关于QUNATAXIS 可以访问 QUANTAXIS

yutiansut
2018/4/23

你可能感兴趣的:(QUANTAXIS查询优化: 如何提升一倍的全市场查询速度)