DB2 模式的默认表空间

default tablespace for schema in DB2

我们的模式有一些 DDL。这些 DDL 在给定的表空间中创建表和索引。类似于:

    CREATE TABLE mySchema.myTable
(
    someField1              CHAR(2)  NOT NULL ,
    someField2            VARCHAR(70)  NOT NULL 
)
        IN MY_TBSPC
        INDEX IN MY_TBSPC;

我们希望将此 DDL 重新用于 运行 一些使用 APACHE DERBY 的集成测试。问题是 DERBY 不接受这种语法。有什么方法可以为表和索引定义一种默认表空间,这样我们就可以删除这个 'IN TABLESPACE' 语句。

在 DB2 中没有定义 "default" table 空间的确定性方法(我假设我们在这里处理 DB2 for LUW)。如果 table 空间没有在 CREATE TABLE 语句中明确指出,数据库管理器将为 table 数据选择带有 suitable 页的第一个 table 空间您有权使用的大小,索引将存储在与数据相同的table空间中。

这意味着如果您只有一个用户 tablespace 它将始终用于数据和索引,因此在某种程度上它成为默认设置。但是,如果您有多个具有不同页面大小的 table 空间,您最终可能会在不同的 table 空间中得到 table(及其索引)。