我有一个表,我认为如果它对许多列使用不同的数据类型可能会更好。如果将这些列切换到更好的数据类型,我希望设计一些测试来确定磁盘空间的收益。如何确定 ASE 15.0 中一个表占用了多少磁盘空间?
问问题
9436 次
2 回答
4
使用
sp_spaceused, table, 1
. 分别报告表和每个索引。DIvidingdata
使用的空间rowtotal
将为您提供一个实际行长度的值(不计算碎片,它基于锁定方案和活动)。使用
sp_help table_name
. 这将为您提供另一个值,即预期或平均行长。使用提供的信息,对列长度进行简单的算术运算;然后估计它们将是您想要的数据类型更改。请注意,可变长度列每列需要 4 个额外的字节。
- 如果列为 Nullable,则将其存储为 Var Len。
现在使用相同的列和新的数据类型创建新表(即使是临时的),然后重复 (2)。这将证实您的估计。
sp_estspace
有不同的目的。
于 2011-01-15T23:10:53.280 回答
1
1> sp_spaceused TableName
2> go
name rowtotal reserved data index_size unused
-------------------- ----------- --------------- --------------- --------------- ---------------
TableName 5530288 5975116 KB 5537552 KB 392292 KB 45272 KB
不过,我不知道有什么可以按列细分。对表使用 sp_help 确实会为您提供所有列的列表及其长度。我认为这表明该列可以使用的存储量。
有一些使用 sp_estspace 估计表大小的方法,但我从未尝试过这些方法。
于 2010-07-23T08:05:16.040 回答