如何确定表在ASE中使用的磁盘空间量

时间:2010-07-22 20:59:29

标签: sybase-ase

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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

  5. sp_estspace有不同的目的。

答案 1 :(得分: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估算表大小,但我从未尝试过这些方法。