计算表的使用量

来源:百度文库 编辑:神马文学网 时间:2024/04/25 15:23:53
一个计算表容量的例子如下:SQL> create table t as select * from dba_objects;SQL> create index t_ind on t(object_id);
SQL> exec dbms_stats.gather_table_stats(user,'t',cascade=>true);
PL/SQL procedure successfully completed.SQL> select avg_row_len from user_tables where table_name='T';
AVG_ROW_LEN
-----------
100
这个数值就是表的平均行长,如果我们能够估算出预期表的记录数N,那么最终表占用的空间就是 100 bytes*N:
SQL> select segment_name,segment_type,bytes from user_segments where segment_name in ('T','T_IND');
SEGMENT_NAME               SEGMENT_TYPE                 BYTES
-------------              ------------------           ----------
T                            TABLE                          6291456
T_IND                       INDEX                           1048576
SQL> select trunc((1048576/6291456)*100) ind_pct from dual;
IND_PCT
----------
16
我们取得了测试表中表和索引的大小,计算出索引和表大小的百分比,这样,我们就获得了最终这个表的空间使用量为:
表的总使用量 = 100 bytes*N(1+16)