mysql 千万级别的数据统计

2019-06-12 17:15:22 +08:00
 caqiko
我们的一个小程序在使用 MySQL 做数据存储,最大的单表 1-2 千万行,每天的增量不到 100W 行。
现在要做统计,可能会关联很多其他的表(活动,产品页面,用户等)。

直接在 navicat 中查,关联几个表,在 distinct 一下,就要一分钟了。
统计结果要做成 API,提供给网页端报表和 APP 端报表使用。

有什么更好的方案吗?

目前想到的临时方案是存储过程写结果表,定时更新。
比如一张表记录每天的新用户数和活跃用户数,一张表记录每天的订单情况。

这样做可以减轻数据库压力,但是不够灵活,运营方有一个需求要统计就需要写一个结果表。
也考虑过数据分层,构建多维数据仓库,然后使用微软的 SSAS 构建 CUBE,不知道这样做还能否通过 API 取 SSAS 中的数?
另外这种方案的成本怎么样?

再另外,现在这种数据量,有上 Hadoop 的必要吗?(目前开发团队主要技术栈是 Node,Python,.Net )
8159 次点击
所在节点    程序员
28 条回复
Vamposine
2019-06-12 21:22:06 +08:00
忘了提了,Kyligence Enterprise 现在无缝对接各大主流 BI 产品,那些 api 什么的根本不需要你提供。基本上就是开箱即用解决你现在所有的需求。速度非常快,当然选择 kylin 自己维护开发也可以。(顺带打得广告应该不会违反 v2 的规矩吧?)
fireapp
2019-06-13 00:04:31 +08:00
binlog 实时同步写 avro,隔天 avro 转 parquet 然后单机 apache drill 或者单机 spark sql 鲁 sql 完事
caqiko
2019-06-16 18:26:56 +08:00
@fireapp 你说的这些名词 我只听过,不知道实施起来难度会不会很大?
fireapp
2019-06-17 08:15:55 +08:00
@caqiko 根据我的经验实施起来不麻烦,都是一些工具,找几个 demo 试试就会了

可以去掉 avro 这个,binlog 实时写
文本,csv/tsv 都行,隔天转 parquet, 转 parquet 能极大提高查询效率,还顺带支持压缩

drill 比 spark sql 简单,解压,简单配置下内存,启动就行,
通过它来 撸 sql 查询文本跟 parquet 文件

提供一台 8 核 16G 机器足够,都是秒查
coder2019
2019-09-16 10:02:16 +08:00
现在我也遇到这个问题,用存储过程联表几个千万级表做数据统计,将结果存到另一张表里,统计操作大表时会直接卡死,各种调索引都没用,有人有经验分享吗
jenlors
2020-01-01 01:01:25 +08:00
最近也遇到这样的需求,查询了一番似乎 clickhouse 是比较好的解决方案。
shanechiu
2020-12-11 23:39:05 +08:00
为什么没人说 elasticsearch?
tryit
2021-01-26 11:24:28 +08:00
请问下楼主现在的方案是什么呀,我们也遇到这个问题,mysql 统计查询到响应时间太长了,定时统计结果又不够灵活。。想求教下~谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/573269

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX