计算表中100行占用的空间

时间:2014-10-24 11:41:10

标签: oracle

我有一个包含5000行的表。有没有办法找出前100行使用了多少空间?

编辑我在互联网上找到了这个脚本:

WITH table_size AS
 (SELECT   owner, segment_name, SUM (BYTES) total_size
      FROM dba_extents
     WHERE segment_type = 'TABLE'
  GROUP BY owner, segment_name)
SELECT table_name, avg_row_len, num_rows * avg_row_len actual_size_of_data,
   b.total_size
FROM dba_tables a, table_size b
WHERE a.owner = UPPER ('&&ENTER_OWNER_NAME')
 AND a.table_name = UPPER ('&&ENTER_TABLE_NAME')
 AND a.owner = b.owner
 AND a.table_name = b.segment_name;

我不知道它是否给出了预期的结果。它计算平均行长度,然后用100乘以100.

1 个答案:

答案 0 :(得分:2)

Oracle通过将行打包成块来将逻辑存储与物理存储分开。因此,虽然它不是直截了当的,但也不准确,但这是可能的。

您必须确定行使用的字节总和(如果您有一个或多个varchar2列,这将是一个有根据的猜测)然后,根据块大小,确定块中适合的行数。 Oracle总是分配一个完整的块,即使它只有两个存储字节,因此总存储量将是块大小的一个因素。