📜  Teradata性能调整

📅  最后修改于: 2021-01-11 11:48:55             🧑  作者: Mango

Teradata性能调优

在Teradata中,执行性能调整以识别所有瓶颈,然后解决它们。

瓶颈不是错误的一种形式,但肯定会导致一定程度的延迟。

有以下几种方法可以识别瓶颈并解决瓶颈,例如:

解释计划

性能调优的第一步是对查询使用EXPLAIN。当查询前面带有EXPLAIN命令时,解析引擎的执行计划将返回给用户而不是AMP。

EXPLAIN计划清楚地展示了优化器执行查询的方式。在说明计划中,检查诸如

  • 置信度
  • 加入策略
  • 假脱机文件大小
  • 重新分配等

收集统计数据

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

  • 收集有关WHERE子句中使用的列以及联接条件中使用的列的统计信息。
  • 在“唯一主索引”列上收集统计信息。
  • 收集有关非唯一二级索引列的统计信息。优化器将决定是否可以使用NUSI或全表扫描。
  • 通过收集基本表上的统计信息收集有关联接索引的统计信息。
  • 收集分区列上的统计信息。

资料类型

表中的每一列都与一种数据类型相关联。数据类型指定将在列中存储哪种类型的值。每个数据值都属于SQL数据类型。

确保使用正确的数据类型。这样可以避免使用过多的存储空间。

转换次数

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

分类

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

线轴空间问题

如果查询超出该用户的每个AMP后台处理空间限制,则会生成后台处理空间错误。

验证说明计划,并确定消耗更多线轴空间的步骤。这些常见查询可以拆分并分开放置以构建临时表。

主要指标

主索引用于指定数据在Teradata中的位置。每个表都必须定义一个主索引,因此请确保为该表正确设置了主索引。

主索引列应平均分配数据,并应经常用于访问数据。

分区主索引

如果在表中定义了分区主索引,请尝试使用它。如果我们不在过滤条件下使用它,它将降低性能。

SET表

如果我们定义一个SET表,那么优化器将检查每个插入的记录是否重复。要删除重复的检查条件,我们需要为表定义唯一二级索引。

大表更新

更新大表将非常耗时。无需更新表,我们可以删除记录并插入具有修改后的行的文件。

删除临时表

如果不再需要临时表(临时表)和volatile,则将其删除。这将释放永久空间和线轴空间。

MULTISET表

如果我们确认输入记录中没有重复文件,则可以将目标表定义为MULTISET表,以避免SET表使用重复行检查。

IN条款

当where条件中可能存在大量值时,请避免在过滤条件中使用IN子句,那么最好将此类值插入volatile表中,并在主查询中使用带有INNER JOIN的volatile表。

更新子句

避免仅在SET条件且没有WHERE条件的情况下使用UPDATE子句。即使目标和源只有一行,也可以为PI列添加WHERE子句。