1

pe_sizeInformix 中的 of是什么sysptnext意思,单位是pe_size什么?单位 o/s 是特定的吗?可pe_size用于计算表格的大小,例如:

select dbsname, tabname, sum(pe_size )*2 / 1024 total_size 
from systabnames, sysptnext where partnum = pe_partnum 
group by 1, 2 order by 3 desc;
4

1 回答 1

1

显示的查询针对数据库中的表运行sysmaster。您通常可以sysmaster在 Informix Aministrator 的参考手册中找到对表和视图的描述。但是,似乎sysptnext( ptn= partition, ext= extents) 没有记录。这意味着它在某些视图中使用。$INFORMIXDIR/etc/sysmaster.sql您可以在表格中找到更多信息,包括评论“{仅供内部使用}” 。该注释主要表示 Informix 不承诺在需要时不更改表。它通常不会更改使用该表的视图,但它可能会在不通知的情况下修改该表。

{ Partition Extent Descriptions }
    create table informix.sysptnext     { Internal Use Only     }    
    (    
    pe_partnum  integer,    { partnum for this partition    }    
    pe_extnum   smallint,   { extent number         }    
    pe_chunk    integer,    { chunk number for this extent  }
    pe_offset   integer,    { chunk offset for this extent  }
    pe_size     integer,    { size of this extent       }    
    pe_log      integer     { logical page for start    }    
    );

范围大小在内部以页为单位(创建表时以千字节(千字节)为单位指定它们)。页大小取决于存储表的数据库空间。但是,除非您为不同的 dbspace 配置了不同的页面大小,否则任何地方都会使用相同的大小。页面大小是 2 KiB(Solaris、AIX、HP-UX、Linux)还是 4 KiB(Windows、Mac OS X)取决于平台。

根据分配的空间,您的查询应该接近生成表的大小。这大于用于存储行的空间。它也不考虑存储在 blob 空间或智能 blob 空间中的 blob;它也不考虑(分离的)索引。而且,如前所述,它假定页面大小为 2 KiB,而不是适应不同的页面大小。除以 1024 产生以 MiB 为单位的大小(兆字节;相当于兆字节的二进制)。

我保留错过有关碎片表的某些内容的权利。碎片表有多个分区,但systabnames表和您的分组子句应该处理这个问题。

如果您有一个 MODE ANSI 数据库,您可能有两个(或更多)不同的表,它们的名称相同但所有者不同;您的查询会将这些表合并为一个报告的答案。

于 2013-01-07T07:21:55.540 回答