Sunday, November 05, 2006
Oracle表大小与列大小
在Oracle中查询一个表的大小,一个数据列的大小。
有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:select segment_name, bytes from user_segments where segment_type = 'TABLE';
另一种表实际使用的空间。这样查询:analyze table emp compute statistics; select num_rows * avg_row_len from user_tables where table_name = 'EMP';
一行的最大尺寸
Oracle表中一行的最大尺寸是多少呢?答案依赖于所使用的Oracle的版本。8.0及其以后版本是4000GB(每个LOB4GB,每个表最多1000个LOB列)。而对于结构化数据varchar2 最大4000字节,char 最大2000字节,则最大可到 4000 * 1000 = 4,000,000字节。
Oracle 7.x,每个表最多254个列,varchar2 最大 2000字节,所以总的结构化数据是508,000字节。或者每个表最多一个long类型,2GB。
查询一个表列最小、平均、最大尺寸:
select min(vsize(c1)),avg(vsize(c1)),max(vsize(c1)) from t1;
'vsize'函数不能用于LONG/BLOB列,可以使用 ‘dbms_lob.getlength(blob-field)’。
有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:select segment_name, bytes from user_segments where segment_type = 'TABLE';
另一种表实际使用的空间。这样查询:analyze table emp compute statistics; select num_rows * avg_row_len from user_tables where table_name = 'EMP';
一行的最大尺寸
Oracle表中一行的最大尺寸是多少呢?答案依赖于所使用的Oracle的版本。8.0及其以后版本是4000GB(每个LOB4GB,每个表最多1000个LOB列)。而对于结构化数据varchar2 最大4000字节,char 最大2000字节,则最大可到 4000 * 1000 = 4,000,000字节。
Oracle 7.x,每个表最多254个列,varchar2 最大 2000字节,所以总的结构化数据是508,000字节。或者每个表最多一个long类型,2GB。
查询一个表列最小、平均、最大尺寸:
select min(vsize(c1)),avg(vsize(c1)),max(vsize(c1)) from t1;
'vsize'函数不能用于LONG/BLOB列,可以使用 ‘dbms_lob.getlength(blob-field)’。