怎样评估 在SQL Server 数据库的一个表中,一条记录会占多少硬盘空间??热!热!热!

herorain 2005-03-18 11:21:01
怎样评估 在SQL Server 数据库的一个表中,一条记录会占多少硬盘空间?

我的目的是评估Sql server资料库的容量空间。
各位大哥,有什么高见?告诉小弟
...全文
831 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudan8057 2005-03-18
  • 打赏
  • 举报
回复
SQL server 的存储是以页为单位的,一页的大小为8K,并且记录不能跨页存储,记录的大小为字段类型的字节总合

例如1:一条记录为1K大小,共1000条记录,它的大小为:
每页可存放记录数 = 8/1 = 8条
表占用空间 = (1000/每页可存放记录数) * 8 = 1000k

例如1:一条记录为3K大小,共1000条记录,它的大小为:
每页可存放记录数 = 8/3 = 2条
表占用空间 = (1000/每页可存放记录数) * 8 = 4000k

zjcxc 2005-03-18
  • 打赏
  • 举报
回复
更多的参考sql联机帮助:

表-SQL Server, 大小
zjcxc 2005-03-18
  • 打赏
  • 举报
回复
如果要自己估计表的大小


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

指定表中的行数:
表中的行数 = Num_Rows

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

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

可变长度列数 = Num_Variable_Cols

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

如果表中有固定长度列,行的一部分(称为空位图)将保留以管理列的可为空性。计算大小:
空位图 (Null_Bitmap) = 2 + (( Num_Cols + 7) / 8 )

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

如果表中有可变长度列,请确定在行中存储这些列需使用的空间:
可变长度列的总大小 (Variable_Data_Size) = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

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

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

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

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

下一步,计算每页的行数(每页有 8096 可用字节):
每页的行数 (Rows_Per_Page) = ( 8096 ) / (Row_Size + 2)

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

如果要在表上创建聚集索引,那么要根据指定的填充因子计算每页保留的可用行数。有关更多信息,请参见填充因子。如果不创建聚集索引,请将 Fill_Factor 指定为 100。
每页的可用行数 (Free_Rows_Per_Page) = 8096 x ((100 - Fill_Factor) / 100) / (Row_Size + 2)

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

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

计算存储所有行所需的页数:
页数 (Num_Pages) = Num_Rows / (Rows_Per_Page - Free_Rows_Per_Page)

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

最后,计算存储表中的数据所需的空间量(每页总字节为8192):
表大小(字节)= 8192 x Num_Pages

viptiger 2005-03-18
  • 打赏
  • 举报
回复
所有字段的字段类型的字节总合

总合*行数=表占用空间
zjcxc 2005-03-18
  • 打赏
  • 举报
回复
use 你的库名
exec sp_spaceused --查询数据库中的空间分配情况

exec sp_spaceused N'表名' --查看表的空间占用情况
631799 2005-03-18
  • 打赏
  • 举报
回复
up 一下
Qihua_wu 2005-03-18
  • 打赏
  • 举报
回复
很久没有来了,用力顶一下
yesyesyes 2005-03-18
  • 打赏
  • 举报
回复
是否应该考虑表中的索引呢?
索引也要占表空间的吧?

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧