物化视图

2021/03/21 spark 共 892 字,约 3 分钟

物化视图选择

维度

单个查询

数仓整体设计(多查询联合优化)

问题拆分

候选视图检测

代价模型

物化视图推荐

检测候选视图

目标: 通过查询的Execution Plan,找到可以被复用的视图

1.Exact same subexpression

基于每个local optimal query plan 找到完全相同的子树(Subexpression)

Pro

可扩展性强

Cons

单个查询的local optimal plan 不一定在多个查询的global optimal plan中

缺乏子树之间的联系(包含关系)

A join B join C

Challenge

Join Enumeration & Unification (Commutative,associative)

Join 的枚举和判等(交换律,结合律)

a inner join b inner join c

Expression subsumption and reuse

包含关系的子表达式复用

2.And/Or View Graph

And

代表一个关系代数表达式(SPJ & Agg)

Or

代表产出相同结果的逻辑表达式集合(视图)

Pro

一个Query (View),可以包含多个子树

Con

可扩展性弱

搜索空间进一步扩大

识别等价的子表达式

e.g. a join a join c

包含关系的子表达式复用

e.g. where a>10, where a >5 => where a>5

e.g. sum(a) group by b,sum(a) group by c =>sum(a) group by b,c

3.MVPP(Multi-View Processing Plan)

根节点代表Query

叶子节点代表Relation

其他节点代表Operation(SPI& Aggregation)

Pro

不包含And节点,比And/Or 简洁,搜索空间小

全局的算子上提与下推

Con

可扩展性更弱

实际上将Or的筛选从物化选择阶段提前到视图检测阶段

代价模型

结合代价模型,使用公式来定义物化视图选择问题

如何量化问题

从计算层面来看:

总代价 = 查询代价 + 物化视图维护代价

额外限制:

存储空间限制

总维护代价限制

选择策略

Volcano

Greedy

BigSubs

文档信息

Search

    Table of Contents