Teradata 简明教程

Teradata - Performance Tuning

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

Explain

性能调优的第一步是针对查询使用 EXPLAIN。EXPLAIN 计划提供优化器执行查询的详细信息。在 EXPLAIN 计划中,检查关键字(如置信级别、已使用的联接策略、假脱机文件大小、重新分配等)。

Collect Statistics

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

  1. 收集 WHERE 子句和作为联接条件使用的列上使用的列的统计数据。

  2. 收集唯一主键索引列的统计数据。

  3. 收集非唯一辅助索引列的统计数据。优化器将决定使用 NUSI 还是全表扫描。

  4. 收集联接索引的统计数据(虽然已经收集了基本表的统计数据)。

  5. 收集分区列的统计数据。

Data Types

确保使用适当的数据类型。这将避免使用超出所需的大量存储空间。

Conversion

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

Sort

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

Spool Space Issue

如果查询超过用户为每个 AMP 分配的卷轴空间限制,则会生成卷轴空间错误。验证执行计划并确定占用更多卷轴空间的步骤。可以将这些中间查询拆分并分别放置以构建临时表。

Primary Index

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

SET Table

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

UPDATE on Large Table

更新大型表会很耗时。您可以删除记录并插入包含修改后的行的新记录,而不是更新表。

Dropping Temporary Tables

如果不再需要,请删除临时表(暂存表)和临时变量。这将释放永久空间和卷轴空间。

MULTISET Table

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