有个日志埋点接收服务,每天大概有 1500W 的请求,需要每 5 分钟进行一些聚合,原始数据大概是 16 个维度,然后取出其中的 5 个左右进行单独聚合。之前使用的是 Percona 的 MySQL 5.5,MyISAM 引擎按天进行表分区,由于每 5 分钟只聚合该 5 分钟内的数据,所以数据量也不多,统计不会有什么问题。
然后有个老哥提出,需要每 5 分钟统计一次当天 0 点到统计时刻的情况,其实就是把原先 5 分钟内的数据统计扩大到 5 分钟到一整天 这样的一个情况,大致相当于到了每天的 20 点后,数据量都是比较大的,然后用 MySQL 的问题就体现出来了,group by 的时候会等很久,大概有个 2 分钟以上,因为统计的任务比较多,导致无法再 5 分钟内进行完所有统计。
于是就进行了各种调研,发现有个叫
Druid.io 的玩意专门用来玩实时 OLAP 的,不过鄙人测试了下,并没有快到哪里去,一方面是因为 queryGranularity 我是按秒的,另外一方面可能是我的服务器不行( Intel(R) Xeon(R) CPU X5650 @ 2.67GHz 64G RAM ) 。
最近我又搞了个 10.2.6-MariaDB,相同的配置下,比 Percona 的要稍快一点,但是依旧无法避免这个需要聚合千万条数据的问题。之前也测试过 InfoBright,由于我那些列基本上都是每行全满的,用了 brighthouse 发现并没有比原先的 MyISAM 快多少,所以就放弃这个了。
不知道各位大侠在这方面是怎么做的?像 bugly 那种那么多数据不知道怎么统计才比较快?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/364608
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.