嗨, 大家好: 网站在新年后正式开通,欢迎大家加入我们,共同维护一个良好氛围的中国技术社区。 欢迎举报不良帖子,欢迎提供建议。
我们的QQ群:136102234,欢迎进群找答案,里边会有很多资深的大师们。 point overflow

我有一个表,记录1024个IP的带宽、HTTP请求数及时间戳,记录间隔是秒,即每秒钟会收集这1024个IP的数据然后入到数据库里。 根据业务需求,每秒钟的数据保留1天(计算得出数据量为 8847万条),1-7天之前的数据,保留1分钟精度,超过7天的,保留5分钟精度。

算法为: 1-7天:计算1分钟里的 最大带宽值 作为这分钟的带宽,计算1分钟里 请求数的和 作为这分钟的请求数 超过7天:算法同上,时间跨度改为5分钟

我只想到两个方案: 1) 每天定时执行,计算后写入新的表,然后删除过期数据。但每天计算 8847 万条数据,担心数据库的性能问题,而且这个MySQL语句似乎挺复杂(不太懂数据库)。 2) 增加Redis作为缓存,每分钟和每五分钟执行一次,按算法算出值后,写入每分钟和每五分钟的数值到MySQL里。然后定时清理每秒的数据即可。

不知道哪个方案比较好。或者MySQL有更好的方案可以自动实现数据的整理?

提问了 2016-04-15 17:45:49

jkant's gravatar image

jkant ♦♦
11131137138
采纳率: 3%


额。一般使用第一种。

可以这样,估计下大概数据量,先写比如5分钟到内存表,然后计算并保存需要的值,之后该写数据写数据。

就看你的io够不够。

永久链接

已回答 2016-04-15 17:46:02

jkant's gravatar image

jkant ♦♦
11131137138
采纳率: 3%

你的回答
切换预览

关注这个问题

邮件:

登录之后,你可以在这里订阅任何更新。

RSS:

回答

回答和评论

Markdown基本语法

  • *italic* or _italic_
  • **bold** or __bold__
  • 链接:[文本](http://url.com/ "标题")
  • 图片?![alt 文本](/path/img.jpg "标题")
  • 编号列表: 1. Foo 2. Bar
  • 如果想要换行,只需要在前一行结尾处插入2个空格即可。
  • 支持基本HTML标记

问题标签:

×72
×1

已提出的问题: 2016-04-15 17:45:49

问题浏览量: 993 次

最后更新: 2016-04-15 17:46:02