Teradata 空间概念

2025年3月17日 | 阅读 3 分钟

Teradata 旨在减少 DBA 在空间管理方面的管理职能。空间概念在 Teradata 系统中通过以下方式配置。

  1. 永久空间
  2. Spool 空间
  3. 临时空间

永久空间 (Perm 空间)

永久空间是用户和数据库保存数据行的最大可用空间量。永久表、日志、回退表和二级索引子表使用永久空间。

永久空间未预先为数据库和用户分配。永久空间的数量除以 AMP 的数量。每当超过 AMP 限制时,就会生成错误消息。

需要进行均等分配,因为对象很可能在所有 AMP 之间共享,并且在数据检索时,所有 AMP 将并行工作以获取数据。

与其他关系数据库不同,Teradata 数据库在创建对象时不会物理定义 Perm 空间。相反,它代表 Perm 空间的上限,然后对象动态使用 Perm 空间。

Teradata Space Concepts

示例

假设我们有一个 Teradata 系统,拥有 500 GB Perm 空间。最初,DBC 拥有新系统的 100% 的 perm 空间。由于在 Teradata 中,一切都是并行的。Perm 空间将在所有 AMP 之间均匀分配。

sysdbaappdba 分别分配 20GB 和 100GB 的 perm 空间,Teradata 系统有 500GB perm 空间和 5 个 AMP,每个 AMP 将获得 100GB 的 perm 空间来并行执行查询,如果 DBC 创建两个用户。

空间将从父级(即 DBC)获取。所以现在 DBC 有 280GB 的 perm 空间。这种机制确保有足够的内存来执行 Teradata 系统中的所有进程。

Spool 空间

Spool 空间是系统中未分配的空间量。它被系统用来保存 SQL 查询的中间结果。没有 Spool 空间的用户无法执行任何查询。

执行条件查询时,所有满足给定条件的合格行都将存储在 Spool 空间中,以供查询进一步处理。任何当前未分配的 Perm 空间都可用作 Spool 空间。

Spool 空间定义了用户可以使用的最大空间量。创建用户和数据库时不需要建立 Spool 空间限制。但强烈建议为任何对象定义 Spool 空间的上限。

Teradata Space Concepts

示例

假设已为数据库分配了 10GB 的永久空间。但是,表实际占用的 perm 空间占 perm 空间的 50%,即 5GB。

剩余的 5GB 空间可用于系统范围内的 spool。子级的 Spool 空间不会从其直接父级中减去。子数据库的 spool 空间可以与其父级相同。sysdbaappdba 的 Spool 空间与 DBC 相同。

临时空间

临时空间是全局临时表使用的未使用的永久空间。临时空间也按 AMP 的数量进行划分。

未使用的 Perm 空间用作存储表及其数据的临时空间。如果我们为临时空间指定某个值,则它不应超过父数据库和用户的值。

如果我们没有指定值,那么最大值将从父级继承。