Teradata - 问题与解决答案

亲爱的读者,这些 Teradata面试问题专门设计用于让您熟悉在面试 Teradata 时可能遇到的问题的本质.根据我的经验,好的面试官在你的面试中几乎不打算问任何特定的问题,通常问题从这个主题的一些基本概念开始,然后他们继续基于进一步的讨论以及你回答和减去的内容;

Teradata Architecture由三个组件组成.

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

  • BYNET :  BYNET从解析引擎接收执行计划并发送到相应的AMP.

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

FastLoadMultiLoad
目标表应为空目标表不能为空
只能使用单个脚本加载一个表最多可以加载/更新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第1列,第2列... 
 FROM tablename; 
  
 SELECT第1列,第2列,... 
 FROM tablename 
 GROUP BY第1列,第2列...... .
  • 主键在Teradata中不是必需的,而主索引是强制性的.

  • 数据分发基于主索引值.

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

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

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

数据可以可以通过3种不同方式访问 : 去;

  • 通过主要索引

  • 通过二级索引

  • 全桌扫描

可以使用查询SELECT HASHAMP()&plus来识别它. 1;

以下查询可用于此目的.

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

Teradata支持两种交易模式.

  • Teradata

  • ANSI

使用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命令规范es Teradata建立新连接的总等待时间.

您可以保留BEGIN LOADING和END LOADING语句并提交FASTLOAD脚本.其他选项是删除表格并再次创建表格.

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

RAID是一种处理磁盘故障的保护机制.它代表Redundant Array of Independent Disks. RAID 1通常用于Teradata.

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

Teradata中有四种不同的锁定 : 独家,写入,读取和访问.

锁可以应用于三个不同的级别和减号;数据库,表和行.

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

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

  • 在阶段1中,它将数据带入64K块并将它们发送到目标安培.然后,每个AMP都会将行重新分配到其目标AMP.

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

MultiLoad导入有五个阶段.

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

  • 阶段2 :  DML Transaction Phase  - 验证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个字节.

您可以在指定列上使用RANK函数具有Qualify = 2条件的降序.

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

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

Teradata有三个置信度:高信度,中等信度和低信心.

NUSI和全表扫描(FTS)将访问所有AMP,但FTS将访问AMP中的所有块,而NUSI将仅在子表包含符合条件的行时访问块.

在BTEQ模式下,SKIP命令可用于跳过记录.

BYTEINT.它只占用一个字节,可以存储最多+ 127的值.

  • 通过唯一主索引 -  1 AMP

  • 通过非唯一主要指数 -  1 AMP

  • 通过独特的二级指数 -  2个AMP

  • 通过非独特的二级指数 - 所有AMP

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

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

  • Transient Journal : 处理交易失败.

  • 后退 : 处理AMP失败.

  • Cliques : 处理节点故障.

  • RAID : 处理磁盘故障.

  • 热备用节点 : 处理节点故障而不影响性能并重新启动.

ACTIVITYCOUNT给出了受BTEQ中先前SQL查询影响的行数.如果ACTIVITYCOUNT语句在insert语句后面,则返回插入的行数.如果ACTIVITYCOUNT语句跟在select语句之后,它将返回所选行数.

下一步是什么?

此外,您可以完成您对该主题所做的过去作业,并确保您能够自信地说出这些作业.如果你更新鲜,那么面试官不会指望你会回答非常复杂的问题,而是你必须使你的基本概念非常强大.

第二,如果你不能,那真的没关系回答几个问题,但重要的是无论你回答什么,你必须自信地回答.所以在面试时要有信心.我们在it1352希望您有一个好的面试官和所有最好的未来努力.干杯: - )