📅  最后修改于: 2020-11-28 13:20:33             🧑  作者: Mango
本章详细介绍表空间
表空间是一种存储结构,它包含表,索引,大对象和长数据。它可用于将数据库中的数据组织到逻辑存储组中,该逻辑存储组与系统上数据的存储位置有关。该表空间存储在数据库分区组中
表空间以各种方式在数据库中很有用,如下所示:
可恢复性:表空间使备份和还原操作更加方便。使用单个命令,可以备份或还原表空间中的所有数据库对象。
自动存储管理:数据库管理器根据需要创建和扩展容器。
内存利用率:单个缓冲池可以管理多个表空间。您可以将临时表空间分配给它们自己的缓冲池,以提高诸如排序或联接之类的活动的性能。
表空间包含一个或多个容器。容器可以是目录名称,设备名称或文件名。在数据库中,单个表空间可以在同一物理存储设备上具有多个容器。如果使用自动存储表空间选项创建表空间,则数据库管理器将自动处理容器的创建和管理。如果不是使用自动存储表空间选项创建的,则需要自己定义和管理容器。
创建新数据库时,数据库管理器会为数据库创建一些默认表空间。这些表空间用作用户和临时数据的存储。每个数据库必须至少包含三个表空间,如下所示:
目录表空间:它包含数据库的系统目录表。它名为SYSCATSPACE,不能删除。
用户表空间:此表空间包含用户定义的表。在数据库中,我们有一个默认的用户表空间,名为USERSPACE1。如果在创建表时未指定用户定义的表空间,则数据库管理器将为您选择默认的用户表空间。
临时表空间:临时表空间包含临时表数据。该表空间包含系统临时表空间或用户临时表空间。
系统临时表空间保存数据库管理器在执行诸如排序或联接之类的操作时所需的临时数据。一个数据库必须至少具有一个系统临时表空间,并将其命名为TEMPSPACE1。它是在创建数据库时创建的。用户临时表空间保存表中的临时数据。它是使用DECLARE GLOBAL TEMPORARY TABLE或CREATE GLOBAL TEMPORARY TABLE语句创建的。在创建数据库时,默认情况下不会创建此临时表空间。
表空间和存储管理:
表空间可以以不同的方式设置,具体取决于您要如何使用它们。您可以设置操作系统来管理表空间分配,可以让数据库管理器分配空间,也可以选择为数据自动分配表空间。
可以使用以下三种类型的托管空间:
系统管理的空间(SMS) :操作系统的文件系统管理器分配和管理存储表的空间。存储空间按需分配。该模型由代表数据库对象的文件组成。对于用户定义的表空间,此表空间类型在版本10.1中已被弃用,对于目录和临时表空间,则不建议使用此表空间类型。
数据库管理的空间(DMS) :数据库服务器控制存储空间。存储空间是根据在创建DMS表空间时指定的容器定义在文件系统上预先分配的。对于用户定义的表空间,从版本10.1修订包1起不推荐使用该方法,但对于系统表空间和临时表空间,则不推荐使用该方法。
自动存储表空间:可以自动管理数据库服务器。数据库服务器根据数据库上的数据创建和扩展容器。使用自动存储管理,不需要提供容器定义。数据库服务器负责创建和扩展容器,以利用分配给数据库的存储。如果将存储空间添加到存储组,则在现有容器达到最大容量时会自动创建新容器。如果要立即使用新添加的存储,则可以重新平衡表空间。
页,表和表空间的大小:
临时DMS和自动存储表空间,您为数据库选择的页面大小决定了表空间大小的最大限制。对于表SMS和临时自动存储表空间,页面大小限制表本身的大小。页面大小可以是4kb,8kb,16kb或32kb。
Tablespace type | 4K page size limit | 8K page size limit | 16K page size limit | 32K page size limit |
---|---|---|---|---|
DMS, non-temporary automatic storage tablespace regular | 64G | 128G | 256G | 512G |
DMS, temporary DMS and non- temporary automatic storage table space large | 1892G | 16384G | 32768G | 65536G |