为啥GPDB在成本估算中不考虑段数

Posted

技术标签:

【中文标题】为啥GPDB在成本估算中不考虑段数【英文标题】:Why does GPDB not consider the number of segments in cost estimation为什么GPDB在成本估算中不考虑段数 【发布时间】:2021-01-15 11:36:52 【问题描述】:

无论什么版本的GPDB开源代码,在成本评估中都不考虑段数,在将解释结果返回给QD时只做一个简单的过程,让结果更清晰。

【问题讨论】:

【参考方案1】:

实际上,Greenplum 在规划时会使用段数。统计信息存储在 master 中,Greenplum 将使用这个全局信息推导出每个段本地的统计信息。

下面列出了一些示例:

    函数adjust_reloptinfo(大上下文请参考PR:https://github.com/greenplum-db/gpdb/pull/10676) 函数estimate_num_groups_on_segment 是在给定集群大小和全局不同值的情况下估计局部不同值 Motion 的成本模型考虑了集群大小:cdbpath_cost_motion ...

【讨论】:

【参考方案2】:

在 Greenplum 中,您的查询在所有段上并行执行,因此所有段都会产生成本。然而,将成本数乘以段数似乎没有帮助,这将为您提供在不同 Greenplum 集群上具有不同成本数的相同查询计划。

【讨论】:

以上是关于为啥GPDB在成本估算中不考虑段数的主要内容,如果未能解决你的问题,请参考以下文章

简练软考知识点整理-估算成本过程

为啥 C# 在多态中不考虑函数的返回类型?

如何估算Azure的费用?

三点估算是质量管理的工具和方法吗

Codeforces Gym 101623A - 动态规划

为啥在休眠中不鼓励复合键?