You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift基于Glue(S3)数据创建物化视图的性能最优方案咨询

基于Glue(S3数据源)的物化视图方案性能对比

三种方案说明

选项1

CREATE MATERIALIZED VIEW VVV AS
(SELECT day, ... FROM A GROUP BY day) 
JOIN (SELECT day, ... FROM B GROUP BY day) ON A.day = B.day
JOIN (SELECT day, ... FROM C GROUP BY day) ON B.day = C.day

查询时直接从VVV读取结果。

选项2

CREATE MATERIALIZED VIEW V1 AS SELECT day, ... FROM A GROUP BY day;
CREATE MATERIALIZED VIEW V2 AS SELECT day, ... FROM B GROUP BY day;
CREATE MATERIALIZED VIEW V3 AS SELECT day, ... FROM C GROUP BY day;

查询时执行SELECT * FROM V1 JOIN V2 ON V1.day = V2.day JOIN V3 ON V2.day = V3.day。

选项3

CREATE MATERIALIZED VIEW V1 AS SELECT * FROM A;
CREATE MATERIALIZED VIEW V2 AS SELECT * FROM B;
CREATE MATERIALIZED VIEW V3 AS SELECT * FROM C;

查询时执行SELECT ... FROM (SELECT day, ... FROM V1 GROUP BY day) JOIN (...) ON ... JOIN (...) ON ...。

性能最优方案:选项2

各方案优劣分析

  1. 选项3(性能最差):
    物化视图存储原表全量数据,查询时需要实时对百万级数据做按日聚合,再执行关联操作。聚合和关联的计算量极大,IO开销高,完全没发挥物化视图预计算的优势,直接排除。

  2. 选项1:
    预计算了所有聚合和关联逻辑,查询时直接读最终结果,IO开销最小。但缺点明显:

    • 刷新成本极高:只要A/B/C任意一个表的日数据更新,整个物化视图需要重新执行三次聚合+两次关联的全量计算,百万级数据下刷新耗时久、资源占用大。
    • 维护灵活性差:如果后续要调整单个表的聚合逻辑,必须重建整个大视图,成本很高。
  3. 选项2(最优选择):

    • 查询性能接近选项1:每个物化视图仅存储对应表的日聚合结果,数据量大幅压缩(百万级原表按日聚合后通常仅数百条数据),关联三个小表的计算量可忽略,查询速度几乎和直接读预关联结果的选项1持平。
    • 刷新成本低:单个表数据更新时,仅需刷新对应的聚合视图,无需重新计算其他表的聚合和关联逻辑,资源占用小、刷新速度快。
    • 维护灵活:调整某张表的聚合规则时,只需重建单个物化视图即可,不影响其他视图的使用。

结合Glue和S3的特性,选项2在查询性能、维护成本、灵活性上达到最优平衡,是百万级表场景下的最佳选择。

内容的提问来源于stack exchange,提问作者IT All

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:05:20