您的位置:首页 > 数据库 > Oracle

统计向oracle每个表中插入一条记录时 , 占用的最大空间

2013-11-05 11:57 232 查看

统计向oracle每个表中插入一条记录时 , 占用的最大空间

1. 原始需要时 , 当我们向oracle 中创建一张表的时候 , 该表会有很多不同类型的字段(字段具有类型 , 长度) ,

当我们向表中插入一条记录时 , 会占用多大的空间那 ?

2. 如果我们知道向表中插入一条记录时占用的空间大小的话 , 我们就可以估计出我们大概需要的空间 ,

需要多少硬盘空间 , 从而减少不必要的投资 .

-- 统计向每个表中插入一条记录时 , 占用的最大空间

select t2.table_name ,

(sum(nvl(t2.data_size , 0 )))||' (B)' as record_size_of_table1 ,

round((sum(nvl(t2.data_size , 0 )))/1024 , 4)||' (K)' as record_size_of_table2

from

(select

t1.TABLE_NAME , t1.COLUMN_NAME , t1.DATA_TYPE ,

case

when t1.DATA_TYPE = 'NUMBER' then floor((nvl(t1.DATA_PRECISION , 0 )+1)/2)+2

when t1.DATA_TYPE = 'DATE' then 7

else t1.DATA_LENGTH

end as data_size

from user_tab_columns t1 ) t2

group by t2.table_name order by t2.table_name

-- 统计向所有表插入一条记录时的 , 占用的最大空间

select

sum(t2.data_size)||' (B)' ,

round(sum(t2.data_size)/1024 , 4) ||' (K)' ,

round(sum(t2.data_size)/1024/1024 , 4) ||' (M)'

from

(select

t1.TABLE_NAME , t1.COLUMN_NAME , t1.DATA_TYPE ,

case

when t1.DATA_TYPE = 'NUMBER' then floor((nvl(t1.DATA_PRECISION , 0 )+1)/2)+2

when t1.DATA_TYPE = 'DATE' then 7

else t1.DATA_LENGTH

end as data_size

from user_tab_columns t1)

t2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐