Teradata - 问题与解答


尊敬的读者,这些Teradata 面试问题经过专门设计,旨在让您熟悉在Teradata主题面试过程中可能遇到的问题的性质。根据我的经验,好的面试官几乎不会计划在面试过程中提出任何特定问题,通常问题从主题的一些基本概念开始,然后根据进一步的讨论和你的回答继续 -

Teradata 架构由三个组件组成。

  • 解析引擎- 解析引擎接收来自用户的查询,解析它并准备执行计划。

  • BYNET - BYNET 从解析引擎接收执行计划并分派到适当的 AMP。

  • AMP - AMP 负责存储和检索行。它将数据存储在与其关联的虚拟磁盘中。除此之外,AMP还负责锁管理、空间管理、排序和聚合。

快速加载 多负载
目标表应该为空 目标表不必为空
使用单个脚本只能加载一张表 最多可以加载/更新 5 个表
仅支持 CREATE/INSERT 语句 在单个脚本中支持最多 20 个 DML 语句
不支持带有 RI、SI 和触发器的表 支持带有 NUSI 的表

FastLoad 通过检查点提供重启功能。当脚本从最后一个检查点重新启动时,相同的行可能会再次发送到 AMP。这就是 FastLoad 不支持重复项的原因。

SET 表不允许重复记录,而 MULTISET 允许重复记录。

对于插入的每一行,系统都会检查是否存在具有相同行哈希的记录。如果表定义了 UPI,那么它将拒绝该记录作为重复记录。否则,它将比较整个记录是否重复。这将严重影响系统性能。

您可以定义唯一主索引或唯一辅助索引以避免重复的行检查。

表是使用 CREATE TABLE 语句创建的。可以使用创建表

  • 带有列定义的 CREATE TABLE 语句。

  • 从现有表创建表。

  • 带有 SELECT 语句的 CREATE TABLE 语句。

可以使用 DISTINCT 语句或 GROUP BY 语句来识别重复记录。

SELECT DISTINCT column 1, column 2… 
FROM tablename;
  
OR
  
SELECT column 1, column 2,… 
FROM tablename 
GROUP BY column 1, column 2….;
  • 在 Teradata 中主键不是强制性的,而主索引是强制性的。

  • 数据分布基于主索引值。

  • 主键不接受 NULL,而主索引接受 NULL 值。

  • 主键是唯一的,而主索引可以是唯一的(UPI)或非唯一的(NUPI)。

  • 主键不会改变,而主索引会改变。

可以通过 3 种不同的方式访问数据 -

  • 通过主索引
  • 通过二级索引
  • 全表扫描

可以使用查询 SELECT HASHAMP() + 1 来识别;

以下查询可用于此目的。

SELECT HASHMAP(HASHBUCKET(HASHROW(primaryindexvalue))), COUNT(*) 
FROM tablename GROUP BY 1; 

Teradata 支持两种事务模式。

  • 泰拉数据
  • 美国国家标准学会

Teradata 模式使用 SET SESSION TRANSACTION BTET 设置;ANSI 模式使用 SET SESSION TRANSACTION ANSI 设置;

交易可以使用 BT 和 ET 语句执行。

用户不能直接访问连接索引。只有优化器才能访问它们。

重复记录将被拒​​绝加载目标表,并将被插入到 UV 表中。

FALLBACK 是 Teradata 用于处理 AMP 故障的保护机制。对于每个数据行,该行的另一个副本存储在集群内的不同 AMP 中。如果任何 AMP 失败,则将使用 FALLBACK AMP 访问相应的行。

FALLBACK 可以在使用 CREATE TABLE 语句创建表时或在使用 ALTER TABLE 语句创建表之后提到。

如果查询的中间结果超出为提交查询的用户设置的每个 AMP 假脱机空间限制,则会发生假脱机空间错误。

SLEEP 命令指定 Teradata 尝试建立连接之前的等待时间。

TENACITY 命令指定 Teradata 建立新连接的总等待时间。

您可以只保留 BEGIN LOADING 和 END LOADING 语句并提交 FASTLOAD 脚本。其他选项是删除表并重新创建表。

Teradata 中的缓存与源一起工作并保持相同的顺序,即不会频繁更改。缓存通常在应用程序之间共享。这是使用 Teradata 的另一个优势。

RAID是一种处理磁盘故障的保护机制。它代表独立磁盘冗余阵列。RAID 1 通常用于 Teradata。

二级索引提供了访问数据的备用路径。它们用于避免全表扫描。然而,二级索引需要额外的物理结构来维护子表,并且还需要额外的 I/O,因为子表需要针对每一行进行更新。

Teradata 中有四种不同的锁:独占锁、写入锁、读取锁和访问锁。

锁可以应用在三个不同的级别——数据库、表和行。

使用多值压缩 (MVC),您最多可以压缩 255 个值,包括 NULL。

FastLoad 以 64K 块的形式加载数据。FastLoad 有 2 个阶段。

  • 在第 1 阶段,它将数据放入 64K 块中并将其发送到目标 AMP。然后,每个 AMP 都会将行哈希重新分配到其目标 AMP。

  • 在第 2 阶段,行按行哈希顺序排序并写入目标表。

MultiLoad 导入有五个阶段。

  • 第 1 阶段- 初步阶段 - 执行基本设置活动。

  • 第 2 阶段- DML 事务阶段 - 验证 DML 语句的语法并将其引入 Teradata 系统。

  • 第 3 阶段- 获取阶段 - 将输入数据带入工作表并锁定表。

  • 第 4 阶段- 应用程序阶段 - 应用所有 DML 操作。

  • 第 5 阶段- 清理阶段 - 释放表锁。

MULTILOAD DELETE 速度更快,因为它以块的形式删除记录。DELETE FROM 将逐行删除。

存储过程返回一个或多个值,而宏可以返回一行或多行。除了 SQL 之外,存储过程还可能包含 SPL 语句。

FastLoad 和 MultiLoad 都以 64K 块的形式加载数据,而 BTEQ 将一次处理一行。

FastExport 以 64K 块的形式导出数据,而 BTEQ 一次导出一行。

Teradata Parallel Transporter (TPT) 是加载/导出数据的实用程序。它结合了 FastLoad、MultiLoad、BTEQ、TPUMP 和 FastExport 的所有功能。

永久日志会跟踪应用更改之前或之后的数据。这有助于将表回滚或前滚到特定状态。可以在表级别或数据库级别启用永久日志。

在 Teradata 中,每个 AMP 都与一个虚拟磁盘关联。只有拥有虚拟磁盘的 AMP 才能访问该虚拟磁盘中的数据。这称为无共享架构。

  • 如果查询使用分区列那么就会导致分区消除,这将大大提高性能。

  • 分区消除其他分区并仅访问包含数据的分区。

  • 您可以轻松删除旧分区并创建新分区。

是的。二级索引需要子表,子表需要永久空间。

是的。每当添加分区主索引时,每行都会额外占用 2 或 8 个字节的分区号。

您可以在 Qualify = 2 条件下对指定列使用降序排列的 RANK 函数。

您可以检查查询的 EXPLAIN 计划,以确定消耗更多假脱机空间的步骤,并尝试优化查询。可以应用过滤器来减少正在处理的记录数量,或者您可以将大型查询拆分为多个较小的查询。

当 EXPLAIN 命令用于查询时,它指定优化器检索记录的置信度。

Teradata 中有三个置信度级别:高置信度、中置信度和低置信度。

NUSI 和全表扫描 (FTS) 都将访问所有 AMP,但 FTS 将访问 AMP 内的所有块,而 NUSI 仅当子表包含合格行时才会访问这些块。

在 BTEQ 模式下,可以使用 SKIP 命令跳过记录。

字节整数。它只占用一个字节,最多可以存储+127的值。

  • 通过唯一主索引 – 1 AMP
  • 通过非唯一主索引 – 1 AMP
  • 通过唯一的二级索引 – 2 个 AMP
  • 通过非唯一二级索引 – 所有 AMP

Clique是一种处理Node故障的保护机制。它是一组节点。当 clique 中的一个节点发生故障时,vproc(解析引擎和 AMP)将迁移到其他节点并继续在其虚拟磁盘上执行读/写操作。

Teradata 提供不同级别的保护机制。

  • 瞬态日志- 处理交易失败。

  • Fallback - 处理 AMP 故障。

  • 派系- 处理节点故障。

  • RAID - 处理磁盘故障。

  • 热备用节点- 处理节点故障而不影响性能和重新启动。

ACTIVITYCOUNT 给出 BTEQ 中受前一个 SQL 查询影响的行数。如果 ACTIVITYCOUNT 语句跟在 insert 语句后面,则它返回插入的行数。如果 ACTIVITYCOUNT 语句位于 select 语句之后,则它返回所选的行数。

下一步是什么?

此外,您可以回顾一下您过去完成的有关该主题的作业,并确保您能够自信地谈论它们。如果你比较新鲜,那么面试官不会期望你会回答非常复杂的问题,而是你必须使你的基本概念非常强大。

其次,如果您不能回答几个问题,这并不重要,但重要的是,无论您回答什么,您都必须充满信心地回答。所以在面试时要保持自信。我们在tutorialspoint 祝您好运,拥有一位优秀的面试官,并祝您未来一切顺利。干杯:-)