【问题标题】:Clickhouse maximum amount of materialized views per base tableClickhouse 每个基表的最大物化视图数量
【发布时间】:2021-10-11 04:43:45
【问题描述】:

对于每个基表的最大物化视图数量是否有任何限制或建议?

我的目标是从包含原始数据(最多包含 1B 条记录)的表中生成多个统计报告。我不想为各种报告生成单个物化视图,而是想创建更小的 MV(例如,每小时统计数据、每日统计数据、按位置/设备/人口统计/等细分的统计数据)。目前它似乎在 12 个 MV 左右,但未来会增加,同时添加新的报告。

CH 会处理这个问题吗?还是我应该寻找不同的方法来实现我的目标?不幸的是,我在文档中找不到任何答案。

【问题讨论】:

    标签: statistics aggregation clickhouse materialized-views


    【解决方案1】:

    没有任何规则。每个系统都是独一无二的。

    我会说 10 MV 太多了。

    但 MV 会减慢插入速度。如果你的摄取没问题,那么 12 对你来说没问题。

    每小时统计数据、每日统计数据、按位置/设备/人口统计/等细分的统计数据

    根据我的经验,我会创作 2 个 MV:

    • 具有以下维度的每小时统计数据:位置、设备、人口统计
    • 具有以下维度的每周统计信息:位置、设备、人口统计

    同时检查预测https://www.youtube.com/watch?v=jJ5VuLr2k5k

    也许您可以针对您的主表创建投影。或者,创建针对 MV 的预测可能是有意义的。

    【讨论】:

    • 很棒的视频,我会更深入地研究预测,谢谢!如果你不介意,再问一个问题。如果将单个 MV 用于具有 n 维(假设为 10)的每小时统计信息,我需要将 MV 创建为 SELECT GROUP BY (user, hour, dimension_1, ..., dimension_n).。这意味着不会有那么多独特的行,因为有几十种可能的维度组合。因此,我的 MV 看起来几乎就像基表,将每 1k 条记录折叠成每小时约 100 条记录。看起来很奇怪。就像我可以在基表上使用本机查询一样。我觉得我在这里遗漏了一些东西
    • 你是对的。如果 MV 的行数比源表少 100 倍 / 1000 倍,则它们可以工作。由你决定。我建议不要包括像用户这样的高基数维度。如果窄 MV 适用于您,则由您决定,然后使用它。您只需要找到一些平衡,因为如果您创建 40 个 MV,那么您将执行 41 次插入,每个 MV 是一个表,CH 也为它们创建部分。
    • 谢谢!不幸的是,我不能从聚合中删除用户,因为我们所有的统计数据都是基于用户的。甚至更多:我需要一种基于某些维度过滤数据的可能性,但这是我可以通过预测实现的。然后,我将在实时数据上尝试不同的 mv 和投影组合。再次感谢,您的所有回答都非常有帮助!
    • 对于那些感兴趣的人:我最终只有一个小时 MV,它将我的 300M 行表爱到只有 9M。因此,这个每小时 MV 存储预先聚合的日期,然后我只需使用带有 GROUP 子句的简单 SQL 查询来完成数据。而且它的运行速度仍然非常快。再次感谢!
    猜你喜欢
    • 2021-12-06
    • 2021-07-24
    • 2021-10-09
    • 2019-01-28
    • 2018-12-28
    • 2018-11-10
    • 2019-08-12
    • 2021-08-14
    • 2021-06-13
    相关资源
    最近更新 更多