为什么DB2会为每个表空间建议一个表?

pax*_*blo 4 db2 mainframe zos tablespace

DB2 docs for DB2/z v10在tablespaces部分中包含以下代码:

作为一般规则,每个表空间中应该只有一个表.

但它实际上并没有为此提供任何理由.

我们有一些表存储基于以下行的历史时间信息(复杂性大大降低,但应足以说明):

Table HOURLY_CPU_USAGE:
    RecDate        date
    RecTime        time
    Node           char(32)
    MaxCpuUsage    float
    primary key    (RecDate, RecTime, Node)
Table DAILY_CPU_USAGE:
    RecDate        date
    Node           char(32)
    MaxCpuUsage    float
    primary key    (RecDate, Node)
Table MONTHLY_CPU_USAGE:
    RecDate        date
    Node           char(32)
    MaxCpuUsage    float
    primary key    (RecDate, Node)
Run Code Online (Sandbox Code Playgroud)

(每日表将所有小时记录汇总到一天,月表与日常数据相同,将其汇总到日期行中YYYY-MM-01).

现在在我看来,这些表的目的非常相似,我不确定为什么我们要将它们保存在单独的表空间中.

现在折扣将它们组合成一张表的可能性,这是我提出的建议,但有一些并发症阻止了它.

"每个表空间一个表"指南背后的理由什么?有什么例外,如果有的话?我认为它们可能是例外,因为它似乎是一个指导而不是一个严格的规则.

小智 5

目前,每个表空间维护一个表的主要原因是管理表.大多数DB2实用程序在表空间级别工作.例如,如果对特定表的表空间执行LOAD REPLACE,则所有其他表将以空结束为空,因为LOAD REPLACE执行的第一件事是删除所有行.

所以"为什么你不为每个表空间保留一张桌子?".我认为,当表与一个没有另一个没用的程度相关时,在一个表空间中包含多个表是合理的,甚至是可取的.例如.CustomerTable + NextCustomerIDTable.

另一个考虑因素是表空间的类型.根据您创建的表空间类型,在单个表空间中创建多个表可能会影响性能.如果不使用分段表空间,表空间扫描将读取表空间中的所有页面,包括其他表中的页面.请参阅此处的"表空间扫描"主题:http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp? topic =%2Fcom.ibm.db2.doc.ve%2Fdvnhlpcn_tablescan.htm