Teradata 面试题及答案

2025年3月17日 | 阅读11分钟
Teradata Interview Questions

以下是经常被问到的 Teradata 面试题及答案

1) Teradata 是什么?Teradata 的主要特点有哪些?

Teradata 是一种 RDBMS(关系数据库管理系统),非常适合用于大规模数据仓库应用。它基于并行处理概念。它是一个开放系统。它可以运行在 Windows/UNIX/Linux 服务器平台上。Teradata 同时支持多个数据仓库操作,服务于不同的客户端。

它由一家名为 Teradata corporation 的美国 IT 公司开发。它是一家分析数据平台、应用程序及其他相关服务的供应商。

Teradata 的特点

  • 它兼容美国国家标准协会 (ANSI)。
  • 它的运行方式类似于服务器。
  • 它是一个开放系统。
  • 它是独立的。
  • 它具有多节点运行能力。
  • 它是基于并行处理构建的。

2) Teradata 支持哪些不同的表类型?

根据 Teradata 中的数据存储,有四种表类型:

  • 永久表
  • 全局临时表 (GTT)
  • 易失表
  • 派生表

永久表

这些是 Teradata 的默认表类型。它的一些特点如下:

  • 顾名思义,这些表会一直保留在系统中,直到被删除。
  • 数据存储在稳定空间中。
  • 永久表定义存储在数据字典中。

全局临时表

全局临时表也是一种永久表。这些表用于存储整个应用程序中全局使用的值,并且其生命周期仅限于用户会话。用户会话结束后,表将被删除。

  • 全局临时表定义存储在数据字典中。
  • 数据存储在临时空间中。
  • 支持收集统计信息。

易失表

易失表仅用于存储用户会话数据。在特定用户会话结束时,表将被删除。易失表对于在数据传输或复杂计算过程中存储中间数据至关重要。

派生表

派生表是所有表中生命周期最短的。这些表在查询执行期间保存中间结果。这些表在查询中创建、使用和删除。


3) Teradata 和 Oracle 有什么区别?

Teradata 和 Oracle 都是关系数据库管理系统。然而,Oracle 支持对象关系数据库管理系统 (ORDBMS)

让我们根据以下参数查看 Teradata 和 Oracle 之间的一些区别。

架构

Oracle 是共享一切架构 (Shared Everything Architecture),而 Teradata 是共享无架构 (Shared Nothing, SN)。

这里,“共享架构”是指一种多处理器数据库管理系统,其中内存和磁盘存储在处理器之间共享。

并行性

Oracle 具有条件并行性,而 Teradata 具有无条件并行性。这使得 Teradata 在 OLAP 方面具有优势,从而在性能上优于非并行系统。并行性需要多处理器系统。

可扩展性

可扩展性包含 IT 基础设施的多个方面,例如数据处理(数据量和事务量的增加)以及多维数据、用户数量、查询复杂度的增加等。

Teradata 是线性可扩展的。线性可扩展意味着可以通过添加更多节点到基础设施来增加数据库容量,并且当数据量增加时,性能不受影响。


4) Teradata 有哪些更新的功能?

它的一些新开发的功能如下:

  • 自动时间序列分析。
  • JavaScript 对象表示法 (JSON)
  • Teradata QueryGrid
  • XML 数据类型
  • 性能
  • 数据压缩
  • 客户相关的创新,如 Teradata Viewpoint。

5) 什么是 Multi-insert?

使用多个 INSERT 语句将数据记录插入表中称为 Multi-insert。我们可以通过在下一个语句的 INSERT 关键字前面加上分号,而不是用分号终止第一个语句来实现。

Insert into Cname "select * from customer";

Insert into amount "select * from customer";


6) Teradata 中的 BTEQ 工具是什么?

BTEQ 工具是 Teradata 中最强大的工具。它既可用于批处理模式,也可用于交互式模式。它还可以用于运行任何 DDL 语句、DML 语句、创建宏和存储过程。BTEQ 的另一个重要用途是将数据从平面文件导入 Teradata 表。它也用于将数据从表提取到文件或报告中。


7) 有哪些常用的 BTEQ 脚本?

一些常用的 BTEQ 脚本如下:

  • LOGON:用于登录 Teradata 系统。
  • ACTIVITYCOUNT:返回最近使用的查询所影响的行数。
  • ERRORCODE:返回最近使用的查询的状态代码。
  • DATABASE:设置默认数据库。
  • LABEL:为一组 SQL 命令分配标签。
  • RUN FILE:执行文件中的查询。
  • GOTO:将控制转移到标签。
  • LOGOFF:注销数据库并终止所有会话。
  • IMPORT:指定输入文件路径。
  • EXPORT:指定输出文件路径并启动导出。

8) Fastload 和 Multiload 有什么区别?哪个更快?

Fastload 使用多个会话将大量数据快速加载到空表中,而 Multiload 用于对表和视图进行高吞吐量的维护。Multiload 也可以与非空表一起使用。Multiload 最多可以使用五个表。

如果谈论速度,那么 Fastload 比 Multiload 更快。


9) Teradata 和基本的 RDBMS 有什么区别?

Teradata基本 RDBMS
它有大量的不同目标。基本 RDBMS 缺少各种目标。
Teradata 允许源操作。基本 RDBMS 不一定总是允许源操作。
组件可以被重复使用任意次数。组件的可重用性有限。
Teradata 中的调试很容易。调试很复杂。

10) 解释 Teradata 中的 AMP?

AMP 是 Teradata 架构的一个组成部分。AMP 代表访问模块处理器 (Access module Processor)。它将数据存储在磁盘上。AMP 参与以下活动:

  • 它管理数据库的一部分。
  • 它维护每个表的一部分。
  • 它完成所有与生成结果集相关的任务,如排序、连接和聚合。
  • 它执行空间和锁管理。

11) SMP 和 MPP 平台是什么?

SMP 技术与硬件相关。支持 Teradata 数据库软件的硬件基于 SMP(对称多处理)技术。硬件可以与通信网络结合,该网络连接 SMP 系统以形成 MSP(大规模并行处理)系统。


12) 解释 MPP 和 SMP 之间的一些区别?

MPP

  • MPP(大规模并行处理)是一种计算机系统,它连接到许多独立的算术单元或完全微处理器,这些单元并行运行。
  • 可以通过添加额外的 CPU 来扩展数据库。
  • MPP 环境不与其他物理计算机共享资源,因此 MPP 环境的性能得到提升。
  • MPP 系统的性能是线性的,因此它随着节点数量的增加而成比例地增加。

SMP

  • 在 SMP(对称多处理)处理系统中,CPU 共享相同的内存。因此,在一个系统中运行的代码可能会影响另一个系统使用的内存。
  • SMP 数据库通常使用一个 CPU 来执行数据库搜索。
  • 并行任务的工作负载被分配到系统中的各个处理器。
  • SMP 数据库可以在多个服务器上运行。然而,它们将共享另一个资源。

13) 你是否在 Teradata 中编写过存储过程?

否,因为存储过程成为某个 AMP 的操作,没有公司会鼓励这样做。


14) 在表上创建索引有什么用?

索引表有助于更快、更有效地搜索记录。


15) 如何查找表中的重复项?

要查找表中的重复项,请使用Group by 对这些字段进行分组,并select id, count(*) from table group by id having count (*) > 1


16) 管理数据为什么重要?

数据是推导出有用信息的最终来源。有了数据,就可以轻松完成许多重要任务,如业务管理、问题制定、决策制定以及许多其他有价值的任务。当数据未得到管理时,用户很有可能出错。妥善管理的数据始终能让用户节省时间,并轻松分析事物。数据管理之所以重要,还有许多其他原因。


17) 你对 Teradata 中的缓存有什么了解?

它是 Teradata 的一个附加功能,允许用户与所有应用程序轻松共享缓存,因为它与源紧密配合,甚至允许用户以他们舒适的方式挂载结果。当数据复杂且包含许多错误时,这种方法可以节省时间。


18) 你如何检查 Teradata 的版本?

可以使用以下命令检查:

".SHOW VERSION".


19) 解释 Teradata 中的并行数据扩展 (Parallel Data Extension)?

PDE 是介于 Teradata 数据库和操作系统之间的软件接口层。PDE 通过系统节点支持并行处理。它有助于提高 Teradata 数据库的速度和线性可扩展性。许多实用程序(如诊断和故障排除)在 PDE 级别运行。

PDE 工具是一组随 Teradata 数据库一起提供的 PDE 实用程序。它们未在“实用程序”中列出,因为 PDE 工具具有在线文档,可以通过系统控制台使用“pdehelp”和“man”命令访问。


20) FALLBACK 有什么用途?

FALLBACK 是 Teradata 用于处理 AMP 故障的独特功能。它在 AMP vproc 故障时保护数据。Fallback 对于需要高可用性的应用程序非常有用。

Fallback 是自动的;在部署 Teradata 数据库时,它默认启用。Fallback 设置不能在表创建期间或之后覆盖。Fallback 是透明的;它通过在同一集群中的任何其他 AMP 上存储表的每一行的第二个副本来保护数据。Fallback 在表级别上支持 AMP 容错。


21) Teradata 中的数据库异常是什么?

Teradata 数据库处理与本地部署的 Teradata 数据库系统相同的特性,但有以下例外:

  • Teradata 数据库数据块预读计数仅为 15 个数据块。
  • Teradata 数据库的永久表默认 PERM DB 大小为 254 个扇区。
  • Teradata 数据库的临时表默认 WORK DB 大小为 254 个扇区,有时也称为 SPOOL DB 大小。
  • 在 Teradata 中,一个事务可以消耗 100% 的 FSG 缓存。

Teradata 数据库 16.10 在公共云中不支持多哈希映射 (Multiple Hash Maps) 功能。


22) 列出 Teradata 的数据类型?

以下是一些 Teradata 的基本数据类型:

数据类型长度(字节)值范围
BYTEINT1-128 至 +127
SMALLINT2-32768 至 +32767
INTEGER4-2,147,483,648 至 +2147,483,647
BIGINT8-9,233,372,036,854,775,80 8 至 +9,233,372,036,854,775,8 07
DECIMAL1-16 
NUMERIC1-16 
FLOAT8IEEE 格式
CHAR固定格式1-64,000
VARCHAR变量1-64,000
DATE4YYYYYMMDD
TIME6 或 8HHMMSS.nnnnnn+HHMM 或 HHMMSS.nnnnnn
CHAR固定格式1-64,000
TIMESTAMP10 或 12YYMMDDHHMMSS.nnnnnn +HHMM 或 YYMMDDHHMMSS.nnnnnn

23) 描述 Teradata 中的主索引。有哪些主索引类型?

指定数据在 Teradata 中存在位置的技术称为主索引。每个表都应指定一个主索引,如果没有指定,Teradata 将为该表分配一个主索引。主索引提供更快的数据访问和搜索。

Teradata 中有两种主索引类型:

  • 唯一主索引 (UPI)
  • 非唯一主索引 (NUPI)

24) 为什么在 Teradata 中使用 CASE 表达式?

CASE 表达式用于评估每个情况是否符合特定条件,并根据第一个匹配项返回结果。当没有情况匹配条件时,将返回 else 部分。

CASE 表达式的基本语法如下:


25) Teradata 中的连接 (Joins) 是什么?有多少种连接类型?

连接使用公共列或值组合来自多个表的记录。

Teradata 中有七种连接类型。

Inner Join

内连接 (Inner joins) 组合来自多个表的记录,并返回两个表中都存在的公共值集。

左外连接

左外连接 (Left outer join) 返回左表中的所有记录以及右表中的公共记录。

右外连接

右外连接 (Right outer join) 返回右表中的所有记录以及左表中的公共记录。

全外连接

它是左外连接和右外连接的组合。它返回两个表中的公共和不同记录。

自连接 (Self-Join)

自连接将一个列中的值与表中同一列中的其他值进行比较。

交叉连接

交叉连接 (Cross join) 将左表中的每一行与右表中的每一行连接起来。

笛卡尔积连接 (Cartesian Production Join)

它的工作方式与交叉连接相同。


26) 什么是分区主索引 (Partitioned Primary Index, PPI)?并讨论在查询中使用它的优点?

分区主索引 (PPI) 是一种索引技术,可以提高特定查询的性能。分区主索引 (PPI) 在表内定义,行根据其分区号进行排序。它们的行哈希排列记录。

分区主索引 (PPI) 的优点

  • PPI 有助于避免全表扫描,并且只访问所需的分区。
  • PPI 避免使用二级索引,有助于防止额外的 I/O 开销。
  • PPI 允许快速访问大表的子集。
  • PPI 有助于轻松删除旧数据和添加新数据。

27) 用语法定义 Teradata 中的视图 (Views)。

基于表上的查询构建的数据库对象称为视图。视图的定义永久存储在数据定义中。视图的数据是动态的,在执行时生成。

语法


28) 描述 Teradata 中的集合运算符 (Set operators)。

集合运算符用于批量处理多个 SELECT 语句的结果。集合运算符与连接不同,因为连接批量处理多个表的列,而集合运算符批量处理多行。

以下是 Teradata 中的四种集合运算符:

  • UNION
  • UNION ALL
  • INTERSECT
  • MINUS/EXCEPT

29) Teradata 中的 Upsert 语句是什么?

在 Teradata 中,我们可以将 UPDATE 和 INSERT 语句合并到一个语句中。这称为 Upsert 语句。


30) Teradata 中的字符串操作运算符和函数有哪些?

Teradata 字符串函数用于字符串操作。它连接字符串并创建一个单一字符串。它还支持一些标准的字符串函数以及 Teradata 对这些函数的扩展。

  • SUBSTR:用于根据 Teradata 扩展提取长字符串的一部分。
  • SUBSTRING:用于根据 ANSI 扩展提取长字符串的一部分。
  • INDEX:用于根据 Teradata 扩展定位字符的特定位置。
  • POSITION:用于根据 ANSI 扩展定位字符的特定位置。
  • TRIM:从指定字符串中修剪空格。
  • UPPER:将字符串转换为大写。
  • LOWER:将字符串转换为小写。