1

我有一个表,我认为如果它对许多列使用不同的数据类型可能会更好。如果将这些列切换到更好的数据类型,我希望设计一些测试来确定磁盘空间的收益。如何确定 ASE 15.0 中一个表占用了多少磁盘空间?

4

2 回答 2

4
  1. 使用sp_spaceused, table, 1. 分别报告表和每个索引。DIvidingdata使用的空间rowtotal将为您提供一个实际行长度的值(不计算碎片,它基于锁定方案和活动)。

  2. 使用sp_help table_name. 这将为您提供另一个值,即预期或平均行长。使用提供的信息,对列长度进行简单的算术运算;然后估计它们将是您想要的数据类型更改。

  3. 请注意,可变长度列每列需要 4 个额外的字节。

    • 如果列为 Nullable,则将其存储为 Var Len。
  4. 现在使用相同的列和新的数据类型创建新表(即使是临时的),然后重复 (2)。这将证实您的估计。

  5. 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 回答