量化回测框架设计之数据篇(一)

背景介绍目前所有股票及期货的Tick都存储在Mysql数据库里,数据引擎采用默认的InnoDB,日线数据采用单表从存储,分钟及Tick数据采用按日期分表存储,每行存储单个时间切片上的相关行情数据,数据库按日更新,通常仅发生15:30后的一段固定时间内,数据库查询则主要用于量化策略的回测,可能发生在任何时间段,目前需在不改变Mysql存储架构的前提下尽量优化查询效率,因股票与期货的行情在存储结构上基...
摘要由CSDN通过智能技术生成
背景介绍

目前所有股票及期货的行情数据都存储在Mysql数据库里,数据引擎采用默认的InnoDB,日线数据采用单表从存储,分钟及Tick数据采用按日期分表存储,每行存储单个时间切片上的相关行情数据,数据库按日更新,通常仅发生15:30后的一段固定时间内,数据库查询则主要用于量化策略的回测,可能发生在任何时间段,目前需在不改变Mysql存储架构的前提下尽量优化查询效率,因股票与期货的行情在存储结构上基本一致,故仅讨论股票的情况(查询需求通常为查询单只或多只股票在N日的日线、分钟及Tick数据,股票代码列添加了普通索引)

1、存储介质优化

首先考虑数据体量,分析能否用内存代替硬盘存储数据(目前服务器内存32G)。对于日线数据,因数据量本身较小,访问速度基本在秒级甚至以内可以完成,无太大必要进行优化;对于分钟数据,其数据量虽大但内存仍可容纳(不进行压缩的情况下股票单日50M,一年可达12.5G),因此可用内存代替进行缓存;对于Tick数据,由于其数据量过大(不进行压缩的情况下股票单日2G,半年就达250G),远超出内存的承受能力,故不在此方案考虑范围内;

1.1、利用临时表/内存表替代原始表

1)Mysql临时表的优势在于可以用同名临时表覆盖原始表,可无缝实现表的转换,并且不需要时也非常方便还原为原始表,但问题在于其仅针对创建会话可见,无法实现全局访问,因而放弃;

2)Mysql内存表可实现全局访问,但需单独建表, 同时,还需调整max_heap_table_size至适当水平。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值