隐式定义的表格空间

Db2 当您发出未指定现有表空间名称的CREATE TABLE语句时,将隐式创建一个按增长分区或按范围分区的表空间。

Db2 隐式定义表空间时,它将为该表生成一个隐式创建的表空间。

如果满足以下条件,表空间名称与表名称相同:
  • 数据库中还没有其他表空间或索引空间使用这个名字。
  • 表格名称不得超过八个字符。
  • 字符均为字母数字,且第一个字符不是数字。

但是,如果数据库中的另一个表空间已经与该表同名, Db2 会分配一个格式为 xxxxnyyy的名称,其中 xxxx 是表名的前四个字符, nyyy 是一个数字和三个字母,以确保唯一性。

更改开始如果未指定 IN 数据库子句 ,则 Db2 会为您生成一个名为 DSNxxxxx 的数据库,其中 xxxxx 为一个五位数字。更改结束

Db2 使用指定数据库的缓冲池。 然而,如果满足以下任何条件,则 Db2 会从子系统参数值TBSBPOOL、 TBSBP8K、 TBSBP16K 和 TBSBP32K 中选择一个合适的缓冲池作为表空间, 该参数位于面板DSNTIP2上:
  • IN 数据库名称子句未指定。
  • IN 数据库名称子句已指定,但表记录长度不符合数据库缓冲池页面大小。

更改开始如果CREATE TABLE语句省略了PARTITION BY子句或指定了PARTITION BY SIZE,则 Db2 将使用CREATE TABLESPACE语句的分区增长规范的默认值。 如果CREATE TABLE语句指定了PARTITION BY(带或不带RANGE关键字)和一组列值作为分区限制键,则 Db2 将使用分区范围规范的默认值。更改结束

更改开始对于隐式创建的表空间的其他属性,如果未在CREATE TABLE语句中指定(仅部分属性可以指定),则结果与显式CREATE TABLESPACE语句相同,但以下属性除外:更改结束

表格空间属性 如何确定
COMPRESS 如果CREATE TABLE语句中未指定,则该值由IMPTSCMP子系统参数确定。
DEFINE 始终由IMPDSDEF子系统参数的值决定。
DSSIZE 如果CREATE TABLE语句中没有指定,则该值由 IMPDSSIZE子系统参数确定。
LOCKMAX 始终使用LOCKMAX系统。
LOCKSIZE LOCKSIZE ROW 总是被使用。
页码 如果CREATE TABLE语句中没有指定,则该值由 PAGESET_PAGENUM子系统参数的值决定。
段大小 对于按范围划分的表空间,始终使用 SEGSIZE 32。
trackmod 如果CREATE TABLE语句中没有指定,则该值由 IMPTKMOD子系统参数确定。

在某些情况下, Db2 还可以为LOB列隐式创建LOB表空间、辅助表和辅助索引,以及为XML列创建基础XML对象。 更多信息,请参阅 LOB表空间隐式创建XML表空间隐式创建。 在这种情况下, Db2 使用默认存储组SYSDEFLT。

Db2 还会创建以下对象:

  • UNIQUE约束的专用索引。
  • 主要关键指标。
  • 如果ROWID列定义为默认生成,则ROWID索引。

Db2 存储 目录表中所有表空间的名称和属性,无论您是显式定义表空间还是 隐式创建表空间。 SYSIBM.SYSTABLESPACE Db2