考试网 >> IT认证 >> Oracle >> Oracle指导 >> Oracle如何精确计算row的大小

Oracle如何精确计算row的大小

发布时间:2006-06-28 09:23     点击:
分页:[1] 2 3  下一页

 第一步:计算整个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定义的大小代替也可以。

   

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

    
分页:[1] 2 3  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有