【发布时间】:2017-03-02 22:45:39
【问题描述】:
在 AS400 中,表 (QDDSSRC) 编译(选项 14)中有一些默认值。 在属性 Member Size 中,附加参数:
Wich是放一个数字或*NOMAX值的意思,如果这个数字是记录的限制或者只是物理大小的增量。
案例 1: 会员规模 初始记录数 ______ 100000
案例 2: 会员规模 初始记录数 ______ *NOMAX
【问题讨论】:
标签: ibm-midrange db2-400
在 AS400 中,表 (QDDSSRC) 编译(选项 14)中有一些默认值。 在属性 Member Size 中,附加参数:
Wich是放一个数字或*NOMAX值的意思,如果这个数字是记录的限制或者只是物理大小的增量。
案例 1: 会员规模 初始记录数 ______ 100000
案例 2: 会员规模 初始记录数 ______ *NOMAX
【问题讨论】:
标签: ibm-midrange db2-400
迈克对这个问题给出了简短的回答,所以这里是长答案。
这种配置是对过去磁盘空间有限的一种保留。有些人仍然喜欢使用它来防止失控的作业填满他们的磁盘。如果磁盘太满,系统将关闭。有几个相关的配置参数,ALLOCATE和REUSEDLT。
这是SIZE 属性的工作原理。它包含三个部分:initial number of records、increment number of records 和 maximum number of increments。将成员添加到物理文件(或源物理文件)时,会为该文件分配initial number of records。根据ALLOCATE 属性,它可能是物理分配的,也可能是软分配的。无论如何,该文件现在可以保存那么多记录。对于像 QDDSSRC 这样的源文件,默认值为 10,000(即 10,000 行源代码)。如果程序想要写入更多记录,则以增量方式添加更多空间。 increment number of records 确定要添加到文件中的记录数。这可能会发生指定的maximum number of increments 次。源文件默认为 1,000 条记录的 499 增量,因此完整的源文件成员默认为 509,000 条记录。即 10,000 + (499 * 1,000)。一旦文件成员已满,任何添加记录的尝试都会导致将一条消息放置在系统操作员队列中,请求允许增加文件大小。
注意,这意味着文件成员可以保存超过记录容量的记录数,但需要系统操作员手动干预才能发生。
DDS 表默认为 10,000 条初始记录和 3 次增量 1,000 条记录。 SQL 表(使用 DDL 定义的)默认为*NOMAX。 *NOMAX 表示表中的最大记录数由系统决定。这可能受到磁盘空间或数据库施加的绝对最大值的限制。
从 v7.3 开始的数据库限制
Maximum rows in a member 4,294,967,288
Maximum size of a member 1.7 terabytes
SQL 可以不使用*NOMAX 的原因之一是它默认重用已删除记录占用的空间。 DDS 定义的文件不这样做(除非用户更改默认值)。因此对于 DDS 表,每次写入都会导致另一条记录被用完。这可能会导致文件被删除的记录填满,需要手动干预来回收该空间。目前的智慧是使用SIZE(*NOMAX)、ALLOCATE(*NO)和REUSEDLT(*YES)。这一劳永逸地让系统决定如何分配磁盘空间。您可以通过更改 CRTPF 的命令默认值来为 DDS 定义的文件获取此行为。
【讨论】:
*NOMAX 表示可以添加到文件的每个成员的记录数没有最大值,除非由操作系统而不是此参数值确定。当设置为 *NOMAX 时,不会发生增量。
【讨论】: