Teradata - 问答



尊敬的读者,这些Teradata 面试问题是专门为了让您熟悉在参加Teradata面试时可能遇到的问题类型而设计的。根据我的经验,优秀的考官在面试期间很少会计划要问什么特定问题,通常问题会从主题的一些基本概念开始,然后根据进一步的讨论以及您的回答继续进行。

Teradata 架构由三个组件组成。

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

  • BYNET - BYNET 接收来自解析引擎的执行计划并将其分派到相应的 AMP。

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

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

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

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

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

您可以定义唯一主键索引或唯一二级索引来避免重复行检查。

使用 CREATE TABLE 语句创建表。可以使用以下方法创建表:

  • 带有列定义的 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
  • ANSI

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

可以使用 BT 和 ET 语句执行事务。

用户无法直接访问连接索引。只有优化器可以访问它们。

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

FALLBACK 是 Teradata 用于处理 AMP 故障的保护机制。对于每一行数据,都会在集群中的另一个 AMP 中存储该行的另一份副本。如果任何 AMP 发生故障,则可以使用 FALLBACK AMP 访问相应的行。

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

如果查询的中间结果超过了为提交查询的用户设置的每个 AMP spool 空间限制,则会发生 Spool 空间错误。

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

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

您可以保留 BEGIN LOADING 和 END LOADING 语句并提交 FASTLOAD 脚本。另一种选择是删除表并重新创建表。

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

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

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

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

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

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

FastLoad 以 64K 块加载数据。FastLoad 有两个阶段。

  • 在阶段 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 并行传输器 (TPT) 是用于加载/导出数据的实用程序。它结合了 FastLoad、MultiLoad、BTEQ、TPUMP 和 FastExport 的所有功能。

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

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

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

  • 分区会消除其他分区,并且只访问包含数据的那些分区。

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

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

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

您可以对指定列使用RANK函数,并使用降序排列,以及Qualify = 2条件。

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

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

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

NUSI和全表扫描(FTS)都会访问所有AMP,但FTS会访问AMP内的所有块,而NUSI仅在子表包含符合条件的行时才访问块。

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

BYTEINT。它只占用一个字节,并且可以存储高达+127的值。

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

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

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

  • 瞬态日志 - 用于处理事务失败。

  • 回退 - 用于处理AMP失败。

  • Clique - 用于处理节点失败。

  • RAID - 用于处理磁盘失败。

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

ACTIVITYCOUNT给出BTEQ中前一个SQL查询影响的行数。如果ACTIVITYCOUNT语句位于插入语句之后,则返回插入的行数。如果ACTIVITYCOUNT语句位于选择语句之后,则返回选择的行数。

下一步是什么?

接下来,您可以回顾一下您之前完成的与主题相关的作业,并确保您能够自信地谈论它们。如果您是应届毕业生,面试官并不期望您能回答非常复杂的问题,而是需要您将基础概念掌握牢固。

其次,如果您无法回答一些问题,其实影响并不大,重要的是,无论您回答了什么,都必须充满自信。所以在面试过程中保持自信。Tutorialspoint祝您能遇到一位好的面试官,并祝您未来的工作一切顺利。干杯!:-)

广告

© . All rights reserved.