使用UNIX SAS查找Netezza表的大小

时间:2011-01-20 11:33:09

标签: unix view sas netezza

可以使用哪些语法/表来确定Netezza表的大小(Gbs)?我通过UNIX SAS(ODBC或libname引擎)访问。我假设有一个视图可以提供这个信息吗?

3 个答案:

答案 0 :(得分:3)

所以你对两个系统视图感兴趣_v_obj_relation_xdb和_v_sys_object_dslice_info。第一个(_v_obj_relation_xdb)包含表信息(名称,类型等),第二个(_v_sys_object_dslice_info)包含每个磁盘信息的大小。你可能想看看这两个表来了解你真正想要的东西,但简单的查询将是:

select objname, sum(used_bytes) size_in_bytes
from _V_OBJ_RELATION_XDB 
join _V_SYS_OBJECT_DSLICE_INFO on (objid = tblid) 
where objname = 'UPPERCASE_TABLE_NAME'
group by objname

这将以字节为单位返回表的大小,并将转换为GB作为练习给读者。还有一些其他有趣的领域,所以你可能想看看那些观点。

答案 1 :(得分:1)

您也可以使用(_v_sys_object_storage_size)

   select   b.objid
            ,b.database as db
            ,lower(b.objname) as tbl_nm
            ,lower(b.owner) as owner
            ,b.objtype
            ,d.used_bytes/pow(1024,3) as used_gb
            ,d.skew
            ,cast(b.createdate as timestamp) as createdate_ts
            ,cast(b.objmodified as timestamp) as objmodified_ts

     from _v_obj_relation_xdb b inner join
          _v_sys_object_storage_size d
          on    b.objid=d.tblid
          and lower(b.objname) = 'table name'

答案 2 :(得分:0)

磁盘上的大小(used_bytes)表示压缩数据,包括表中任何已删除行的存储空间。

表rowcount统计信息(reltuples)通常非常准确,但它只是一个统计信息,不能保证与“select count(*)”表rowcount匹配。

您可以通过目录查询获取此信息

select tablename, reltuples, used_bytes from _v_table_only_storage_stat where tablename = ^FOOBAR^;