物化视图选择
维度
单个查询
数仓整体设计(多查询联合优化)
问题拆分
候选视图检测
代价模型
物化视图推荐
检测候选视图
目标: 通过查询的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
文档信息
- 本文作者:Jessica
- 本文链接:https://jessica0530.github.io/2021/03/21/%E7%89%A9%E5%8C%96%E8%A7%86%E5%9B%BE-TODO/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)