估计表的大小(一)

转载 2006年06月25日 19:54:00

估计表的大小

下列步骤可用于估计存储表中的数据所需的空间量。

  1. 指定表中的行数:

表中的行数 = Num_Rows

  1. 如果在表的定义中有固定长度和可变长度列,请计算数据行中这两组列的每一组所占用的空间。列的大小取决于数据类型和长度说明。有关更多信息,请参见数据类型

列数 = Num_Cols

所有固定长度列中的字节总和 = Fixed_Data_Size

可变长度列数 = Num_Variable_Cols

所有可变长度列的最大值 = Max_Var_Size

  1. 如果表中有固定长度列,行的一部分(称为空位图)将保留以管理列的可为空性。计算大小:

空位图 (Null_Bitmap) = 2 + (( Num_Cols + 7) / 8 )

仅使用上述表达式中的整数部分,而去掉其余部分。

  1. 如果表中有可变长度列,请确定在行中存储这些列需使用的空间:

可变长度列的总大小 (Variable_Data_Size) = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

如果没有可变长度列,请将 Variable_Data_Size 设置为 0

此公式假设所有可变长度列均百分之百充满。如果预计可变长度列占用的存储空间比例较低,则可以按照该比例调整结果以对整个表大小得出一个更准确的估计。

  1. 计算行大小:

行总大小 (Row_Size) = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap +4

最后一个值 4 表示数据行首结构。

  1. 下一步,计算每页的行数(每页有 8096 可用字节):

每页的行数 (Rows_Per_Page) = ( 8096 ) / (Row_Size + 2)

因为行不跨页,所以每页的行数应向下舌入到最接近的整数。

  1. 如果要在表上创建聚集索引,那么要根据指定的填充因子计算每页保留的可用行数。有关更多信息,请参见填充因子。如果不创建聚集索引,请将 Fill_Factor 指定为 100

每页的可用行数 (Free_Rows_Per_Page) = 8096 x ((100 - Fill_Factor) / 100) / (Row_Size + 2)

计算中使用的填充因子为整数值,而不是百分数。

因为行不跨页,所以每页的行数应向下舍入到最接近的整数。填充因子增大时,每页将存储更多的数据,因此页数将减少。

  1. 计算存储所有行所需的页数:

页数 (Num_Pages) = Num_Rows / (Rows_Per_Page - Free_Rows_Per_Page)

估计的页数应向上舍入到最接近的整数。

  1. 最后,计算存储表中的数据所需的空间量(每页总字节为8192):

表大小(字节)= 8192 x Num_Pages

估计表的大小(一)

估计表的大小下列步骤可用于估计存储表中的数据所需的空间量。 指定表中的行数: 表中的行数 = Num_Rows 如果在表的定义中有固定长度和可变长度列,请计算数据行中这两组列的每一组所占...
  • mengtech
  • mengtech
  • 2008年01月03日 14:37
  • 257

估计表的大小

估计表的大小(一)下列步骤可用于估计存储表中的数据所需的空间量。 指定表中的行数: 表中的行数 = Num_Rows 如果在表的定义中有固定长度和可变长度列,请计算数据行中这两组列的每一...
  • annicybc
  • annicybc
  • 2006年07月01日 11:52
  • 942

估计表的大小(二)--估计带有聚集索引的表的大小

估计带有聚集索引的表的大小下列步骤可用于估计存储带有聚集索引的表上的数据和任何附加的非聚集索引所需的空间。 计算存储数据所用的空间。 计算存储聚集索引所用的空间。 计算存储每个...
  • zjcxc
  • zjcxc
  • 2006年06月25日 19:55
  • 2980

估计表的大小(二)--估计带有聚集索引的表的大小

估计带有聚集索引的表的大小下列步骤可用于估计存储带有聚集索引的表上的数据和任何附加的非聚集索引所需的空间。 计算存储数据所用的空间。 计算存储聚集索引所用的空间。 计算存储每个...
  • chenguoda
  • chenguoda
  • 2008年01月03日 14:38
  • 164

估计表大小(三)--估计无聚集索引的表的大小

估计无聚集索引的表的大小下列步骤可用于估计存储没有聚集索引的表上的数据和任何附加的非聚集索引所需的空间。 计算存储数据所用的空间。 计算存储每个附加非聚集索引所用的空间。 汇总...
  • zjcxc
  • zjcxc
  • 2006年06月25日 19:59
  • 3039

估计表大小(三)--估计无聚集索引的表的大小

估计无聚集索引的表的大小下列步骤可用于估计存储没有聚集索引的表上的数据和任何附加的非聚集索引所需的空间。 计算存储数据所用的空间。 计算存储每个附加非聚集索引所用的空间。 汇总...
  • chenguoda
  • chenguoda
  • 2008年01月03日 14:37
  • 250

m估计及其推到公式

为什么要有m-估计? 当我们通过在全部事件的基础上观察某事件出现的比例来估计概率时,例如:P=nc/n.,其中nc为该类别中的样本数量,n为总样本数量。若n=5,当P=0.6时,则nc为3。多数...
  • sinat_37789134
  • sinat_37789134
  • 2017年04月01日 22:25
  • 123

sql 查询数据库中每个表的大小

For example: exec sp_MSForEachTable @precommand=N'create table temp(name sysname,rows bigint,reserv...
  • xiaojie_cp
  • xiaojie_cp
  • 2015年05月21日 15:23
  • 780

【测试入门系列】如何估计数据库中的数据量、行数

对于小表,可以直接使用聚集函数来查询:select count(1) from table_name;但对于大表,例如几千万行数据量的表格,这个查询会超时,对于线上系统,还会因为消耗系统资源过多而影响...
  • maray
  • maray
  • 2016年07月05日 10:50
  • 682

oracle中查询某张表的大小

select sum(bytes)/1024/1024 "表大小(M)" from user_segments where segment_name='table_name';--注,仅表数据的大小,...
  • zengmingen
  • zengmingen
  • 2016年07月15日 14:09
  • 788
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:估计表的大小(一)
举报原因:
原因补充:

(最多只允许输入30个字)