Teradata 性能调优
本章讨论在 Teradata 中进行性能调优的过程。
解释
性能调优的第一步是在查询中使用 EXPLAIN。 EXPLAIN 计划提供了优化器将如何执行您的查询的详细信息。在解释计划中,检查诸如置信度、使用的连接策略、假脱机文件大小、重新分配等关键字。
收集统计数据
Optimizer 使用数据人口统计数据来提出有效的执行策略。 COLLECT STATISTICS 命令用于收集表的人口统计数据。确保在列上收集的统计信息是最新的。
收集有关 WHERE 子句中使用的列和连接条件中使用的列的统计信息。
收集有关唯一主索引列的统计信息。
收集非唯一二级索引列的统计信息。优化器将决定是否可以使用 NUSI 或全表扫描。
虽然收集了基表的统计信息,但也收集了有关联接索引的统计信息。
收集有关分区列的统计信息。
数据类型
确保使用正确的数据类型。这将避免使用超出要求的过多存储空间。
转化
确保连接条件中使用的列的数据类型兼容,以避免显式数据转换。
排序
除非需要,否则删除不必要的 ORDER BY 子句。
线轴空间问题
如果查询超出该用户的每个 AMP 假脱机空间限制,则会生成假脱机空间错误。验证解释计划并确定消耗更多假脱机空间的步骤。这些中间查询可以拆分并单独放置以构建临时表。
主要索引
确保为表正确定义了主索引。主索引列应该均匀分布数据,并且应该经常用于访问数据。
设置表
如果您定义了一个 SET 表,那么优化器将检查插入的每条记录是否重复。要去除重复检查条件,您可以为表定义唯一二级索引。
大表更新
更新大表会很耗时。您可以删除记录并插入修改了行的记录,而不是更新表。
删除临时表
删除不再需要的临时表(临时表)和 volatiles。这将释放永久空间和假脱机空间。
MULTISET 表
如果您确定输入的记录不会有重复记录,那么您可以将目标表定义为 MULTISET 表,以避免 SET 表使用重复行检查。