javascript - mysql 访客数等数据统计 优化

查看:95
本文介绍了javascript - mysql 访客数等数据统计 优化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

现在想要解决的问题:
按天、时、周、月对数据做汇总统计,现在的分表模式对于业务还是不太够,当用户需要对前端展示出来的数据做一些动态修改时,难以在切换统计单位时展示出来。
希望能找一些分表方式,以及统计数据修改的方式。
到目前的流程:
最开始仅有a表(统计数据表)

id 数据id;
projectId 项目id;
time 统计日期(yyyy-MM-dd HH:mm:ss);
action 动作名称(如浏览、分享);
userAgent 用户来源(如微博、微信、pc);
commonUserId 用户id(如:ip);

访客数通过 COUNT(DISTINCT COMMONUSER_ID) _visitor统计的访客数,但数据量一大,查询速度就变得超级慢了,之后开始考虑分表,现在暂时建了个b表(汇总表)

id 数据id;
action 动作名称(如浏览、分享);
dataNum 数据总计;
projectId 项目id;
dataTime 统计日期(yyyy-MM-dd);
createtime 创建时间;

现在仅把每天的汇总了下,若不考虑假数据,按小时汇总的也可以用类似的方式,但考虑到日后需要动态修改一些展示的数据时(又必须保留数据库中的原始数据),就需要考虑修改数据后这几个统计单位各个统计量总数的统一,以及修改数据的方式,就比较麻烦,不清楚该怎么做更好些了。
对于修改数据这块,目前想到的是一种是对数据加某个值,一种是对数据进行百分比添加,但若修改基数据,容易造成最终总数据的不一致,这样就比较纠结了。

解决方案

第一种方案,冗余时、天、周、月、年字段,分别和用户id建组合索引,这样千万级数据用distinct 查个uv还是很快的。然后按各个冗余字段建汇总表,最后走上数据仓库的道路。

第二种方案是使用分布式的数据库。

这篇关于javascript - mysql 访客数等数据统计 优化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆