ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 对oracle数据表空间的计算

对oracle数据表空间的计算

原创 Linux操作系统 作者:greenteazsh 时间:2011-02-15 17:49:42 0 删除 编辑
定义好数据表后,对一个数据记录占用表空间的估算方式:
定义数据表t_test:
CREATE TABLE t_test(
  id number(8)   not null,
  sip number(10),
  stime timestamp,
  filename varchar2(2048 char),
  dire char(1),
  primary key (id)
)
1、先说下oracle中各字段类型的定义。number(size),为整型数据定义,其中的size最大可为38位,这个size是定义的最长长度,是占用的字节数。但在数据库中的实际占用字节数是和具体数值有关的。查询方式:select t.id, dump(t.id) from t_test t;,用dump函数,对字段实际占用的字节数进行查询。结果为2249  Typ=2 Len=3: 194,23,50,type=2为oracle对number类型的常量定义,len=3表示实际占用的字节数。所以说number类型的实际存储空间不是定长的。同理,varchar2(size)也不是定长的,size表示可存储的最大字节数。char是定长的。所说,number和varchar2是可变存储的,但定义数据表的时候要视实际情况进行决定,不要太长。
2、表中字段涉及到索引时,所占用空间的计算。
b-tree索引每行都有一个rowid,一个rowid对应为60位,再和字节进行换算。对于bitmap索引,目前还没有找到好的计算公式,以后补充。对已经运行一段时间的数据库,可以对表所占空间,索引所占空间进行查询,计算一个比例值。具体是用到dba_extents或dba_segments,segment_name segment_type字段。
select (sum(bytes)/1024/1024) as M from dba_segments where segment_name = 'T_TEST';
select (sum(bytes)/1024/1024) as M from dba_segments where segment_name = upper
('index_sip_t_test');

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9521459/viewspace-687289/,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle表分区详解
请登录后发表评论 登录
全部评论

注册时间:2011-01-13

  • 博文量
    51
  • 访问量
    193366