AS400/DB2表汇编中的数字或 *NOMAX值



在AS400中,表(QDDSSRC)编译中有一些默认值(OPT 14)。在属性成员大小中,Aditional参数:

wich是放置数字或 *nomax值的含义,如果此数字是记录的限制或只是物理大小增量。

案例1:会员大小 记录的初始数量______ 100000

案例2:会员大小 记录的初始数量______ *nomax

Mike给出了这个问题的简短答案,所以这是长答案。

这种配置是从磁盘空间有限的时代开始的一种。有些人仍然喜欢使用它来防止失控的作业填充磁盘。如果磁盘过于填充,则系统会关闭。有几个相关的配置参数,ALLOCATEREUSEDLT

这是SIZE属性的工作方式。它具有三个部分:initial number of recordsincrement number of recordsmaximum 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)。一旦文件成员已满,任何尝试添加记录的尝试都会导致在系统操作员队列上输入消息,请要求增加文件大小。

Note 这意味着文件成员可以持有的记录数量超过记录的记录,但是系统操作员需要手动干预才能发生。

DDS表默认为10,000个初始记录,3个增量为1,000条记录。SQL表(使用DDL定义的表)将其默认为*NOMAX*NOMAX表示表中的最大记录数是由系统确定的。这可能会受到磁盘空间的限制,也可能是数据库施加的绝对最大值。

db限制为v7.3

Maximum rows in a member          4,294,967,288
Maximum size of a member          1.7 terabytes

SQL可以使用*NOMAX逃脱的原因之一是,它默认情况下已删除的记录占用的空间。DDS定义的文件不执行此操作(Unles用户更改默认值)。因此,对于DDS表,每个写作都会导致另一个记录被用完。这可能会导致文件填充已删除的记录,并要求手动干预以收回该空间。当前的智慧是使用SIZE(*NOMAX)ALLOCATE(*NO)REUSEDLT(*YES)。一劳永逸,该系统可以决定如何分配磁盘空间。您可以通过更改CRTPF的命令默认值来获得DDS定义文件的此行为。

*nomax意味着可以将记录的数量最多添加到文件的每个成员,除非由操作系统确定而不是此参数值。设置为 *nomax时,不会发生增量。

相关内容

  • 没有找到相关文章

最新更新