📅  最后修改于: 2020-11-29 09:11:42             🧑  作者: Mango
亲爱的读者,这些Teradata面试问题是专门为让您熟悉在Teradata主题的面试过程中可能遇到的问题的性质而设计的。根据我的经验,优秀的面试官几乎不会计划在面试过程中提出任何特定的问题,通常,问题是从该主题的一些基本概念开始的,后来根据进一步的讨论和您的回答,这些问题会继续出现-
Teradata体系结构包含三个组件。
解析引擎-解析引擎从用户那里接收查询,进行解析并准备执行计划。
BYNET -BYNET从解析引擎接收执行计划,并将其分派到适当的AMP。
AMP -AMP负责存储和检索行。它将数据存储在与其关联的虚拟磁盘中。除此之外,AMP还负责锁管理,空间管理,排序和聚合。
FastLoad | MultiLoad |
---|---|
Target table should be empty | Target table need not be empty |
Only one table can be loaded using a single script | Can load/update up to 5 tables |
Supports only CREATE/INSERT statement | Supports up to 20 DML statements in single script |
Doesn’t support tables with RI, SI and Triggers | Supports tables with 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支持两种事务处理模式。
使用SET SESSION TRANSACTION BTET设置Teradata模式; ANSI模式是使用SET SESSION TRANSACTION ANSI设置的;
可以使用BT和ET语句执行事务。
用户无法直接访问联接索引。只有优化器才能访问它们。
重复的记录将被拒绝加载目标表,并将被插入到UV表中。
FALLBACK是Teradata用于处理AMP故障的保护机制。对于每个数据行,该行的另一个副本存储在群集中的不同AMP中。如果任何AMP失败,则将使用FALLBACK AMP访问相应的行。
使用CREATE TABLE语句创建表时或使用ALTER TABLE语句创建表后,可以提及FALLBACK。
如果查询的中间结果超出为提交查询的用户设置的每个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有两个阶段。
在阶段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才能访问该虚拟磁盘中的数据。这称为无共享架构。
如果查询使用分区列,则将消除分区,这将大大提高性能。
分区消除了其他分区,仅访问了包含数据的分区。
您可以轻松删除旧分区并创建新分区。
是。次要索引需要需要永久空间的子表。
是。每当添加分区主索引时,分区行的每一行都会占用额外的2或8个字节。
您可以在Qualify = 2条件下以降序对指定列使用RANK函数。
您可以检查查询的EXPLAIN计划,以确定占用更多后台打印空间的步骤,并尝试优化查询。可以应用过滤器以减少正在处理的记录数,也可以将大型查询拆分为多个较小的查询。
当对查询使用EXPLAIN命令时,它指定优化器检索记录的置信度。
Teradata中有三个置信度级别:高置信度,中置信度和低置信度。
NUSI和全表扫描(FTS)都将访问所有AMP,但是FTS将访问AMP中的所有块,而NUSI仅在子表包含合格行的情况下才访问块。
在BTEQ模式下,可以使用SKIP命令跳过记录。
字节它仅占用一个字节,最多可以存储&127;值。
Clique是一种处理节点故障的保护机制。它是一组节点。当集群中的某个节点发生故障时,vproc(解析引擎和AMP)将迁移到其他节点,并继续在其虚拟磁盘上执行读/写操作。
Teradata提供了不同级别的保护机制。
瞬态日志-处理事务失败。
备用-处理AMP故障。
集团-处理节点故障。
RAID-处理磁盘故障。
热备用节点-处理节点故障而不影响性能并重新启动。
ACTIVITYCOUNT给出受BTEQ中先前SQL查询影响的行数。如果ACTIVITYCOUNT语句在插入语句之后,则返回插入的行数。如果ACTIVITYCOUNT语句在select语句之后,则返回选择的行数。
此外,您可以浏览过去完成的与该主题相关的作业,并确保您能够自信地对它们发表讲话。如果您是新手,那么面试官不会期望您会回答非常复杂的问题,而是必须使您的基本概念非常扎实。
其次,如果您不能回答几个问题,那实际上并不重要,但是重要的是无论您回答了什么,都必须自信地回答。因此,在面试时要感到自信。我们在tutorialspoint上祝您好运,有一位优秀的面试官,也祝您未来事业一切顺利。欢呼声:-)