用户名: 密码: 注册 找回密码
搜索   
收藏本站 设为主页
首页
新闻 供求 报价 技术 下载 商家 商城 博客
论坛
硬件学院 软件学院 解决方案
技术查找 
  按标题 按全文
相关技术
· 如何得到AIX系统安装时间...
· AIX如何限制用户SSH远程...
· 主流虚拟主机布阵方式浅...
· KVM主机切换系统轻松管理...
· 服务器技术之负载均衡技...
· 设置一台虚拟的 FTP 服务...
最近头条
· 微软云计算平台Windows ...
· Intel企业级固态硬盘开始...
· IBM花费3年打造“网络故...
· 《中关村日报》IT渠道商...
· AMD公司一分为二 获60亿...
· IBM携Bluehouse参战云计...
相关供求
· CX600 CX700 EMC后备电池...
· 迅驰光纤收发器/光电转换...
· 单模室外架空光缆/双铠双...
· 威腾37u服务器机柜13120...
· SUN Blade2000/B1000,B1...
· 批发HP,IBM各系列服务器...
Advertisement
 首页 > 技术频道 > 软件学院 > 浏览技术 关键字: oracle  数据库 
Oracle如何精确计算row的大小
2006-6-21 12:25:23   equalnull   来源:中华服务器网    点击:1057次   加入收藏夹

第一步:计算整个Block Header的大小         
数据块头部所需要的空间大小由以下公式计算:         
Space after headers (hsize) = DB_BLOCK_SIZE - KCBH - UB4 - KTBBH - ((INITRANS - 1) * KTBIT) - KDBH         
其中的一些参数说明如下:          
DB_BLOCK_SIZE:数据库的block大小,可以查询V$PARAMETER视图中获得。          
KCBH、UB4、KTBBH、KTBIT、KDBH都是常量,这些定义的大小可以从V$TYPE_SIZE视图中获得。         
INITRANS是分配给表的初始化事务的数量,可以从USER_TABLES表中的INI_TRANS字段中获得。       
  
第二步:计算每个数据块可用的数据空间  
      
每个数据块为数据保留的空间是由PCTFREE参数所指定的,因此计算公式如下:         
Available data space (availspace) = CEIL(hsize * (1 - PCTFREE/100))         
– KDBT         
其中的一些参数说明如下:         
CEIL是取大于或者等于N的最小整数。         
PCTFREE是在表中预留出来用于UPDATE操作的空间,可以从USER_TABLES表中的PCT_FREE字段中获得。         
KDBT是常量,定义的大小可以从V$TYPE_SIZE视图中获得。如果你找不到KDBT的定义大小,用UB4定义的大小代替也可以。         

第三步:计算每行所用的空间大小

计算每行所使用的空间大小是需要多步计算完成的。         
首先计算列的大小,包括字节的长度:         
Column size including byte length = column size + (1, if column size < 250, else 3)         
对于列的大小,既可以利用经验来判断其大小,也可以使用语句来计算每列的大小:         
Select avg(vsize(colname)) from table_name;         
接着,计算行的大小:        
Rowsize = row header (3 * UB1) + sum of column sizes including length bytes         
最后,计算每行所用的空间大小:        S
pace used per row (rowspace) = MAX(UB1 * 3 + UB4 + SB2, rowsize) + SB2         
UB1、UB4、SB2都是常量,定义的大小可以从V$TYPE_SIZE视图中获得。        
对不起,您需要登录后才能查看全部详细内容
上一条技术: 如何为Oracle导出文件加上时间戳
下一条技术: Oracle和SUN Solaris内核参数


关于我们 法律声明 广告服务 友情链接 联系我们
版权所有:中华服务器网©2001-2008
粤ICP备05008160号 由深圳市七乘二四信息技术有限公司提供技术支持。
 客 服