最近在做一个项目,项目中有大量的数据需要实时存储在mysql数据库中,数据量大致在每秒几万条数据。并且需要对数据库的历史数据进行操作:用户通过配置条件进行组合查询;并对查询的结果进行统计和显示;并对效率有要求。
因此,对于需求主要分为两部分:实时存储和历史访问。
实时存储
对于实时存储做了许多尝试效果都不理想,包括采用insert语句多记录插入、存储过程存储。最后将表改为了MyISAM,并将实时数据写入文件中,采用Load命令将文件导入到表中,效果比较理想。
历史查询计算
对于每秒几万连续存储几天的数据,量是相当的大。对于查询以及计算是相当的有压力。目前采用的方法是;
- 给用户一个时间选择限制,让查询总的数据量变小。
- 将经常使用的字段尽量设为索引。
- 尽量将各个字段类型转为整型,不使用字符串类型,加快查询的比较效率。
- 分表策略。
- 提高硬件性能,将磁盘改为固态硬盘,增加内存。