开发者社区> 问答> 正文

可指定任意时间段查询网站流量统计数据的问题

简单需求:最近在做一个数据统计的项目,要求要统计的最小单位是分钟,类似统计网站的PV这样子,后台要求能看到某一天的某个小时或几个小时内每分钟的量的走势...等等,大家做过统计应该是知道的,我现在的设计是利用redis分布顶前端的访问记录存储,然后通过配合mysql持久记录历史数据,现在我的瓶颈在于mysql的设计上
大致的表设计是这样的:表名:test_pv 字段:id day hour minute1 ... minutes60
通过day去利用mysql分区为365个(这里大家建议一下是利用Range,list,hash中的那个比较好?)
还有就是此表的索引和分区上需要注意什么,就是希望高手给与设计上一些实际性的建议,网上的资料我已经通遍了,就是想大家给出一些指正和设计上的合理性的建议

展开
收起
落地花开啦 2016-02-29 18:25:35 3998 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    这是我一些个人想法,不知道是否合理。选择用哪一个,主要要结合你的统计的需要。

    1. 不一定要分为365个,分成这么多分区,访问时去扫描的分区就多了,那会增加IO开销。
    2. 如果经常进行环比,比如连续几天,或者连续的某两天进行对比,那range,list好一些,因为相你的分区相对连续,那可以减少IO.
    3. 如果是经常进行同比,比如这个月的某天与上个月的某天,那可以用hash,函数可以自己定义,可以将可能同时访问的数据放在同一分区中,减少IO.
    4. 另外,不知道统计显示是用什么来做的?...目前我也在做一个类似的监控系统,我用rrd4j 做显示。
      另外,用explain将你最常用的查寻打印出来看看,如果每个查询要涉及 的分区 少的话,那分区 有优势,否则就慢了
    2019-07-17 18:50:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
FLINK在大规模实时无效广告流量检测中的应用 立即下载
《开放搜索查询分析服务架构分享》 立即下载
低代码开发师(初级)实战教程 立即下载