Teradata - 性能调优

本章讨论了 Teradata 中的性能调优过程。

解释

性能调优的第一步是使用 EXPLAIN 查询。EXPLAIN 计划详细说明了优化器如何执行查询。在解释计划中,检查关键字,如置信度、使用的连接策略、假脱机文件大小、重新分配等。

收集统计信息

优化器使用数据人口统计数据来制定有效的执行策略。COLLECT STATISTICS 命令用于收集表的数据人口统计数据。确保收集的列统计信息是最新的。

  • 收集 WHERE 子句中使用的列和连接条件中使用的列的统计信息。

  • 收集唯一主索引列的统计信息。

  • 收集非唯一二级索引列的统计信息。优化器将决定是否可以使用 NUSI 或全表扫描。

  • 虽然收集了基表的统计信息,但仍然收集连接索引的统计信息。

  • 收集分区列的统计信息。

数据类型

确保使用正确的数据类型。这将避免使用超出要求的存储。

转换

确保连接条件中使用的列的数据类型兼容,以避免显式数据转换。

排序

除非需要,否则删除不必要的 ORDER BY 子句。

假脱机空间问题

如果查询超出该用户的每个 AMP 假脱机空间限制,则会产生假脱机空间错误。验证解释计划并确定消耗更多假脱机空间的步骤。这些中间查询可以拆分并单独放置以构建临时表。

主索引

确保为表正确定义了主索引。主索引列应均匀分布数据,并应经常用于访问数据。

SET 表

如果您定义了 SET 表,则优化器将检查插入的每条记录是否重复。要删除重复检查条件,可以为表定义唯一二级索引。

大型表上的更新

更新大型表将非常耗时。您可以删除记录并插入修改行的记录,而不是更新表。

删除临时表

如果不再需要临时表(暂存表)和易失性表,请将其删除。这将释放永久空间和假脱机空间。

MULTISET 表

如果您确定输入记录不会有重复记录,则可以将目标表定义为 MULTISET 表,以避免 SET 表使用的重复行检查。