在Teradata收集统计数据

时间:2014-04-15 22:58:43

标签: statistics teradata

如果在teradata中嵌套查询,我必须收集统计信息。什么是理想的做法:

(1)我是否会收集有关整个嵌套查询的统计信息。

(2)或者,我是否仅收集有关我需要统计信息的查询部分的统计信息?

我知道这是一个模棱两可的问题,但我想知道解决这种情况的理想方法。

1 个答案:

答案 0 :(得分:2)

TL; DR - 选项2

您可以从统计角度开始确定优化程序认为必要的内容,方法是使用以下诊断命令,然后针对相关查询运行EXPLAIN:

SET DIAGNOSTIC HELPSTATS ON FOR SESSION;

在EXPLAIN结束时,优化器将包括,尽管有时是积极的,优化器认为缺少的统计信息将提高查询计划的可信度。对于初学者,我将重点关注它使用 高可信度 指示的统计数据,然后重新运行EXPLAIN以比较查询计划中的更改。 (你保存了原始EXPLAIN输出,对吧?)这是一个迭代过程,你收集的每一组额外统计数据都应该比较EXPLAIN输出,以确定它是否提高了特定步骤的置信度,或者为优化器提供了更好的选择。 一般的经验法则是统计数据不应该导致不太理想的计划。

HELPSTATS诊断通常会包含许多信心较低的其他统计信息。请记住,如果您的环境有一个计划的进程来维护统计信息,那么您收集的每个额外的统计信息都可能会增加该进程的开销。您希望与环境的DBA协调您收集的任何其他统计信息,以便他们了解。在某些环境中,统计信息可能会作为物理数据模型的一部分进行维护,因此您收集的任何内容都可能需要记录。

最后,Teradata 14.10会将您认为对统计信息维护知之甚少的内容全部转换为内容。数据库查询日志记录正在扩展,以与这个新的统计“进程”(由于缺少更好的术语)相关联,并且在启用时,该进程可以根据系统上的查询模式建议收集统计信息。它还可以识别已经收集的未使用的统计数据并停止收集它们。