MySQL中处理大量数据的高效方式

6
我有一个场景和两个选项来实现它。哪一种方法更有效?
我正在使用mySQL存储学生考勤数据(约1亿)。稍后根据用户的选择使用这些出勤数据绘制图表和结果。
方法.1) 为每天的学生考勤数据存储一行数据(这将呈指数增长,减少处理时间)
方法.2) 在一行中存储一个学生一年的出勤数据的序列化或JSON格式行 (当每天更新考勤时,这将增加处理时间并减小数据库大小)

2
100k并不是很多。 - sagi
100k和100百万,这是一个重大的编辑! - Shadow
抱歉...我错过了。 - mr. super cool
所以你每天都会保存1亿行数据(是在计算学生还是兔子 :P)?或者目前已经有1亿行数据,并且每天还在增长多少?因为我仍然认为我的答案可以适用。 - Juan Carlos Oropeza
我有一个AVL服务,每分钟保存每辆车的x, y位置。因此,每天也会有大约10万条数据。但是我只在主数据库中保存6个月前的数据。并使用一些算法来预测交通行为,但我将原始数据压缩成趋势变量。 - Juan Carlos Oropeza
显示剩余4条评论
1个回答

9
首先,我认为您有些混淆了,行数将会按线性方式增加而不是指数方式,这是很大的区别。
其次,对于数据库来说,十万条记录根本不算什么。即使你存储了365天的数据,那也只有3600万记录,我一周就存储了那么多。
第三,将数据存储在JSON中可能会对未来的查询产生复杂影响。
因此,我建议采用第一种方法。
通过使用适当的索引、设计和快速硬盘,数据库可以处理数十亿条记录。
另外,您可以考虑将历史数据保存在不同的模式中,以便当前数据更快,但这只是一个小调整。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接