Teradata 性能调优17 Mar 2025 | 4 分钟阅读 在 Teradata 中,性能调优旨在识别所有瓶颈并加以解决。 瓶颈并非错误形式,但它确实会导致一定的延迟。 识别和解决瓶颈的方法如下: EXPLAIN 计划性能调优的第一步是对查询使用 EXPLAIN。当查询前面带有 EXPLAIN 命令时,解析引擎的执行计划将返回给用户而不是 AMPs。 EXPLAIN 计划清晰地展示了优化器将如何执行查询。在 EXPLAIN 计划中,检查以下关键字:
收集统计信息优化器使用数据分布信息来制定有效的执行策略。COLLECT STATISTICS 命令用于收集表的数据分布信息。确保对列收集的统计信息是最新的。
数据类型表中的每个列都关联一个数据类型。数据类型指定列中将存储哪种类型的值。每个数据值都属于一种 SQL 数据类型。 确保使用正确的数据类型。这将避免使用超过所需容量的存储空间。 转换确保连接条件中使用的列的数据类型兼容,以避免显式数据转换。 Sort除非需要,否则删除不必要的 ORDER BY 子句。 Spool 空间问题如果查询超出该用户每个 AMP 的 Spool 空间限制,则会生成 Spool 空间错误。 验证 EXPLAIN 计划并识别消耗更多 Spool 空间的步骤。这些常见查询可以拆分并单独构建临时表。 主索引主索引用于指定数据在 Teradata 中的位置。每个表都要求定义主索引,因此请确保为主表正确设置主索引。 主索引列应均匀分布数据,并应经常用于访问数据。 分区主索引如果在表中定义了分区主索引,请尝试使用它。如果我们不在过滤条件中使用它,它会降低性能。 SET 表如果我们定义了一个 SET 表,那么优化器将检查插入的每条记录是否存在重复。要删除重复检查条件,我们需要为表定义唯一辅助索引。 大表更新更新大表将非常耗时。与其更新表,不如删除记录并插入带有修改行的文件。 删除临时表如果不再需要,请删除临时表(暂存表)和易失表。这将释放永久空间和 Spool 空间。 MULTISET 表如果确认输入记录没有重复文件,我们可以将目标表定义为 MULTISET 表,以避免 SET 表使用的重复行检查。 IN 子句当 WHERE 条件中可能有大量值时,避免在过滤条件中使用 IN 子句,此时最好将这些值插入到一个易失表中,并在主查询中使用该易失表进行 INNER JOIN。 UPDATE 子句避免在 UPDATE 子句中只使用 SET 条件而没有 WHERE 条件。即使目标表和源表只有一行,也要为 PI 列添加 WHERE 子句。 下一主题# |
我们请求您订阅我们的新闻通讯以获取最新更新。