DBSPACETEMP 环境变量

DBSPACETEMP 环境变量指定在其中构建临时表的数据库空间。该列表可能包含标准数据库空间和/或临时数据库空间。

dbspace
是现有的标准或临时数据库空间的名称。
您可以列出数据库空间(用冒号 ( : ) 或逗号 ( , ) 符号来分隔),以便为跨物理存储设备的临时表指定空间。例如:用来设置 DBSPACETEMP 环境变量的以下命令为临时表指定三个数据库空间:
setenv DBSPACETEMP sorttmp1:sorttmp2:sorttmp3

DBSPACETEMP 覆盖 DBSPACETEMP 参数在数据库服务器配置文件中指定的任何缺省数据库空间。对于 UPDATE STATISTICS 操作,只有在指定 HIGH 关键字选项时才使用 DBSPACETEMP。

在 UNIX™ 平台上,如果 DBSPACETEMP 中的数据库空间列表是由作为原始设备来分配的块所组成的,那么就可能获得更好的性能。

就象操作系统定义的那样,环境变量的最大大小限制数据库空间的数目。如果该环境变量指定的数据库空间不存在,那么数据库服务器不会创建该数据库空间。

两类临时表包括用户创建的显式临时表和数据库服务器创建的隐式临时表。使用 DBSPACETEMP 为这两种类型的临时表指定数据库空间。

如果使用 CREATE TEMP TABLE 语句创建显式临时表,且不在 IN dbspace 子句或 FRAGMENT BY 子句中为该表指定数据库空间,那么数据库服务器使用 DBSPACETEMP 中的设置来确定在何处创建该表。

如果使用 SELECT INTO TEMP 语句创建显式临时表,那么数据库服务器使用 DBSPACETEMP 中的设置来确定在何处创建该表。

如果设置了 DBSPACETEMP,并且它列出的数据库空间包括日志记录和非日志记录数据库空间,那么数据库服务器会把临时表(该表隐式或显式支持事务日志记录)存储在日志记录数据库空间中,并把非日志记录临时表存储在非日志记录数据库空间中。

数据库服务器在执行连接操作、带有 GROUP BY 子句的 SELECT 语句、带有 ORDER BY 子句的 SELECT 语句和索引构建时会创建隐式临时表以供其自身使用。

当数据库服务器创建显式或隐式临时表时,它会使用磁盘空间来写临时数据。如果临时表位置的设置或语句规范之间有冲突,那么以降序(从最高到最低)的优先顺序解决这些冲突:
  1. 在 UNIX 平台上,环境变量 PSORT_DBTEMP(如果设置了该环境变量的话)指定的一个或多个操作系统目录
  2. 环境变量 DBSPACETEMP 指定的一个或多个数据库空间(如果设置了该环境变量的话)
  3. ONCONFIG 参数 DBSPACETEMP 指定的数据库空间。
  4. DUMPDIR 配置参数指定的操作系统文件空间
  5. 目录 $GBASEDBTDIR/tmp (UNIX)。
要点: 如果将 DBSPACETEMP 环境变量设置为无效值,那么对于显式临时表,数据库服务器缺省值为根数据库空间,而对于隐式临时表,缺省值为 /tmp,而不是 DBSPACETEMP 配置参数的设置。在此情况下,数据库服务器可能会填充 /tmp 直至达到限制,最终使得数据库服务器关闭或杀死文件系统。