DB2 表空间

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

DB2 表空间是一种存储结构,其中包含表、索引、大对象和长数据。它可用于将数据库中的数据组织成与数据在系统上存储位置相关的逻辑存储组。

DB2 Tablespaces 1

表空间存储在数据库分区组中。


数据库中表空间的优势

表空间提供了各种优势

可恢复性: 表空间使备份和恢复操作更加方便。使用单个命令,您可以备份或恢复表空间中的所有数据库对象。

自动存储管理: 数据库管理器根据需要创建和扩展容器。

内存利用率: 单个缓冲池可以管理多个表空间。您可以将临时表空间分配给它们自己的缓冲池,以提高排序或连接等活动的性能。

容器

表空间由一个或多个容器组成。容器可以是目录名称、设备名称或文件名。

在数据库中,单个表空间可以在同一物理存储设备上拥有多个容器。如果表空间是使用自动存储表空间选项创建的,则容器的创建和管理由数据库管理器自动处理。如果不是使用自动存储表空间选项创建的,则需要自己定义和管理容器。

默认表空间

创建新数据库时,数据库管理器会为数据库创建一些默认表空间。这些表空间用作用户和临时数据的存储。每个数据库必须至少包含三个表空间,如下所示

  • 目录表空间
  • 用户表空间
  • 临时表空间

目录表空间: 它包含数据库的系统目录表。它名为 SYSCATSPACE 并且无法删除。

用户表空间: 此表空间包含用户定义的表。在数据库中,我们有一个默认用户表空间,名为 USERSPACE1。如果创建表时未指定用户定义的表空间,则数据库管理器会为您选择默认用户表空间。

临时表空间: 临时表空间包含临时表数据。此表空间包含系统临时表空间或用户临时表空间。

系统临时表空间保存数据库管理器在执行排序或连接等操作时所需的临时数据。数据库必须至少有一个系统临时表空间,它名为 TEMPSPACE1。它是在创建数据库时创建的。用户临时表空间保存来自表的临时数据。它使用 DECLARE GLOBAL TEMPORARY TABLE 或 CREATE GLOBAL TEMPORARY TABLE 语句创建。此临时表空间在创建数据库时默认未创建。

表空间和存储管理

可以以不同的方式设置表空间,具体取决于您希望如何使用它们。您可以设置操作系统来管理表空间分配,您可以让数据库管理器分配空间,或者您可以选择自动分配表空间以用于您的数据。

以下三种类型的托管空间可用

系统托管空间 (SMS): 操作系统的文件系统管理器分配和管理存储表的位置。存储空间是按需分配的。此模型由表示数据库对象的组成文件组成。此表空间类型在版本 10.1 中已弃用,用于用户定义的表空间,但未弃用用于目录和临时表空间。

数据库托管空间 (DMS): 数据库服务器控制存储空间。存储空间是根据您在创建 DMS 表空间时指定的容器定义在文件系统上预先分配的。它从版本 10.1 Fix Pack 1 开始已弃用,用于用户定义的表空间,但未弃用用于系统表空间和临时表空间。

自动存储表空间: 数据库服务器可以自动管理。数据库服务器根据数据库中的数据创建和扩展容器。使用自动存储管理,不需要提供容器定义。数据库服务器负责创建和扩展容器以利用分配给数据库的存储空间。如果您向存储组添加存储空间,则当现有容器达到其最大容量时,会自动创建新容器。如果要立即使用新添加的存储空间,可以重新平衡表空间。

页面、表和表空间大小

对于临时 DMS 和自动存储表空间,您为数据库选择的页面大小决定了表空间大小的上限。对于表 SMS 和临时自动存储表空间,页面大小限制了表本身的大小。页面大小可以是 4kb、8kb、16kb 或 32kb。

 
下一个主题Db2-数据库架构