TeraData Basics

本文介绍了 Teradata 数据库的基础概念,包括并行处理、线性扩展性和四种主要的索引类型:唯一主索引 (UPI)、非唯一主索引 (NUPI)、多列主索引以及无主索引表。同时探讨了这些索引如何影响数据分布及查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TeraData Basics

持续更新中。。
插图画得很辛苦

1. Basic concept

1.1 Parallel Processing

001

AMP(Access Module Processor)

002

1.2 Linear Scalability

All Teradata tables are spread across ALL AMPs

003

3. Four Different Primary Indexes

3.1 UPI

CREATE TABLE Employee_Table
( Employee_No       INTEGER
 ,Last_Name         CHAR(20)
 ,Mgr_No            VARCHAR(12)
 ,Salary            Decimal(10,2)
) UNIQUE PRIMARY INDEX(Employee_No)

Teradata hashes UPI to distribute the date to all the AMPs evenly

3.2 NUPI

CREATE TABLE Employee_Intl
( Employee_No       INTEGER
 ,Dept_No           INTEGER
 ,Last_Name         CHAR(20)
 ,Salary            Decimal(10,2)
) PRIMARY INDEX(Dept_No)

Teradata distributes same NUPI into one AMPs, normally unevenly

3.3 Multi-Column Primary Index

Apply to both UPI & NUPI

CREATE TABLE Employee_Intl
( Employee_No       INTEGER
 ,Dept_No           INTEGER
 ,First_Name        CHAR(10)
 ,Last_Name         CHAR(20)
 ,Salary            Decimal(10,2)
) PRIMARY INDEX(First_Name,Last_Name)

Where write query, you need to combine the multi-column primary index, in order to get single AMP retrieving.

SELECT FROM Employee_Intl WHERE First_Name = '' AND Last_Name = '';

3.4 No Primary Index Tables

Random distribution, which is always even.

CREATE TABLE Employee_Intl
( Employee_No       INTEGER
 ,Dept_No           INTEGER
 ,First_Name        CHAR(10)
 ,Last_Name         CHAR(20)
 ,Salary            Decimal(10,2)
) PRIMARY INDEX(First_Name,Last_Name)

When execute the query, it will do a full table scan, usually for staging, which makes loading data faster.

Or use it for Columnar design

CREATE TABLE Employee_Columnar
( Employee_No       INTEGER
 ,Dept_No           INTEGER
 ,First_Name        CHAR(10)
 ,Last_Name         CHAR(20)
 ,Salary            Decimal(10,2)
) No Primary Index
Partition By Column
  • must be a NoPI table
  • COLUMN keyword

4. Nodes

4.1 SMP Node

AMPs and Parsing Engines live inside SMP (Symmetric Multi-Processing) Nodes

004

AMPs share nothing, each of them has its own disk, memory, CPU

4.2 MPP

Two SMP nodes connected become one MPP (Massive Parallel Processing) system

005

4.3 Teradata Cabinet

006

4.4 Inside a Node

PDE - Parallel Database Extensions, which controls the BYNET

PE - Parsing Engines

Vproc - Virtual Processes

007

4.5 Boardless BYNET and Physical BYNET

Each PE controls every AMP, but why multiple PEs instead of one? Because each PE handles 120 sessions (users), which makes Teradata available for many users at the same time.

008

5. Hashing the primary index

<think>好的,我现在需要回答用户关于Linux shell中重定向符号`>/dev/null 2>&1`的问题。首先,我要确认自己对这个符号的理解是否正确。 用户的问题是想了解这个命令的含义,特别是将输出重定向到/dev/null并合并错误流。我记得在Linux中,文件描述符1是标准输出(stdout),2是标准错误(stderr)。而`>/dev/null`是将标准输出重定向到空设备,也就是丢弃输出。然后`2>&1`的意思是将标准错误重定向到标准输出的位置,也就是同样丢弃错误信息。所以整个命令的作用是让命令的执行既不显示输出也不显示错误信息。 不过我需要确认一下顺序是否正确,因为有时候顺序会影响结果。比如,如果写成`2>&1 >/dev/null`,这样可能错误输出还是会被显示,因为先重定向了stderr到stdout的当前位置(即终端),然后再把stdout重定向到/dev/null。而正确的写法应该是先改变stdout的位置,再将stderr指向stdout的新位置,也就是`>/dev/null 2>&1`。这一点需要注意,用户可能会混淆顺序带来的不同效果。 另外,用户提到“merge error stream”,也就是合并错误流到输出流中。这时候如果使用`&>`或者`>&`这样的符号,例如`command &>/dev/null`,也可以达到同样的效果,可能更简洁。不过用户的具体例子是分开写的,可能需要解释这两种方式的异同。 还要考虑是否有其他相关知识点需要提及,例如不同的shell(如bash、zsh)在处理这些重定向时是否有差异,或者是否有类似的问题需要注意,比如子进程是否会影响重定向的结果。比如引用[1]中提到,在bash中某些情况下父进程可能不会等待所有子进程完成,这可能会影响重定向的日志处理。不过用户的问题可能不涉及这些复杂情况,但可能需要简要提及不同shell的差异。 接下来,我需要组织回答结构,首先解释每个部分的含义,然后整体作用,再举例说明,最后可能给出常见使用场景。同时,按照用户的要求,生成相关问题,可能需要包括重定向的其他用法、不同shell的区别、/dev/null的作用等。 在检查LaTeX格式时,用户提到数学表达式要用$...$,但这个问题可能不涉及数学公式,所以可能不需要使用。不过如果有涉及到变量或代码中的符号,可能需要确保格式正确。例如,在解释文件描述符时,可以用$1$和$2$表示,如文件描述符$1$代表标准输出,文件描述符$2$代表标准错误。 另外,用户要求用中文回答,所以要注意用词准确,避免术语错误。例如,“重定向”是正确的术语,而“合并错误流”可能需要更准确的表达,比如“将标准错误重定向到标准输出的位置”。 最后,生成相关问题的时候,要确保问题相关且有价值,比如询问其他重定向符号、错误处理的方法、不同shell的差异等。 总结一下,回答的结构大致如下: 1. 解释>/dev/null的作用 2. 解释2>&1的作用 3. 整体命令的作用 4. 顺序的重要性 5. 其他等效写法 6. 使用示例 7. 应用场景 8. 相关问题 需要确保每个部分都准确无误,并且引用相关的引用内容,如果有必要的话。但在这个问题中,用户的引用似乎更多是关于其他例子,比如tee命令和QEMU,可能和当前问题无关,所以可能不需要引用。但根据用户的系统指令,回答中引用的段落末尾需要添加引用标识,所以需要检查是否有需要引用的地方。例如,在提到不同shell的行为差异时,可以引用用户提供的引用[1]中的内容,说明bash和其他shell在处理子进程时的不同,但可能这更多是关于后台进程和重定向的完成时机,而不是当前问题的核心。如果和当前问题相关,可以提及,否则可能不需要。 因此,最终的思考是,用户的问题核心在于重定向的语法和含义,所以重点放在解释各个部分,顺序的重要性,以及常见用法。可能不需要涉及引用中的内容,除非在讨论相关问题时有涉及。</think>在Linux shell中,`>/dev/null 2>&1` 是**同时丢弃标准输出和标准错误**的重定向操作,具体含义如下: --- ### 分步解释 1. **`>/dev/null`** 将**标准输出(文件描述符$1$)**重定向到空设备`/dev/null`,即丢弃所有正常输出。 - 例如:`ls >/dev/null` 执行后屏幕不显示任何结果。 2. **`2>&1`** 将**标准错误(文件描述符$2$)**重定向到**标准输出的当前目标**(即`/dev/null`)。 - 注意顺序:需先指定标准输出的目标,再重定向标准错误。若写反(如`2>&1 >/dev/null`),错误仍会输出到终端[^1]。 --- ### 整体作用 - 命令的**正常输出和错误信息均被丢弃**,适用于只关注命令执行结果(通过`$?`获取返回值)、不关心输出的场景。 - 等效写法:`&>/dev/null`(更简洁,但某些旧版本shell不支持)。 --- ### 示例 ```bash # 执行命令并静默所有输出 grep "keyword" large_file.txt >/dev/null 2>&1 ``` - 若`grep`找到匹配内容,结果不显示;若文件不存在,错误信息也不显示。 --- ### 应用场景 1. **后台任务**:避免日志污染终端。 2. **脚本中非关键操作**:如临时文件清理。 3. **性能测试**:减少I/O开销对计时的影响。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值