mysql 访客数等数据统计与优化要注意什么?
烟雨江南
烟雨江南 2017-02-28 09:39:59
0
2
992

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

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

烟雨江南
烟雨江南

全員に返信(2)
数据分析师

mysql 訪問者数などのデータをカウントおよび最適化する際に注意すべき点は何ですか? -PHP中国語サイトQ&A-mysql 訪問者数などの統計や最適化で注意すべきことは何ですか? -PHP中国語サイトQ&A

ぜひ見て学んでください。

いいねを押す +0
迷茫

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

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


いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート