2011-01-20 55 views

回答

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

也可以使用(_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' 
0

在磁盘上(used_bytes)的大小表示压缩数据,并且包括用于存储表中的任何删除的行。

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

你可以通过目录查询此信息

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