2011-01-20 2 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)의 크기는 압축 된 데이터를 나타내고, 표에서 삭제 된 행에 대한 스토리지를 포함한다.

테이블 행 계수 통계 (reltuples)는 일반적으로 매우 정확하지만 통계 일 뿐이며 "선택 개수 (*)"테이블 행 개수와 일치하지는 않습니다.

당신은 카탈로그 쿼리를 통해이 정보를 얻을 수 있습니다

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