用于规划 SQL 数据库大小要求的工具

用于规划 SQL 数据库大小要求的工具

我即将开始为一些 SQL Server Analysis Services 设置 SQL 数据仓库。我要切分的数据位于我无法控制的异地数据库中,因此我的想法是设置常规作业,以便获取新条目并将其插入到我自己的表中。

我想知道是否有任何好的工具可以帮助规划数据库空间需求。仅 5 个月后,我感兴趣的表已经拥有近 450 万条记录,到明年这个时候,我估计我们每月可以生成 300-400 万条记录。

我想我正在寻找的东西是可以将表定义输入其中,然后告诉我十亿行需要多少磁盘空间。

谢谢。

编辑


好吧,使用 Excel,我得出了每个记录的理论上 1098 个字节,最坏的情况是每个记录最多使用 varchar(1000)。

每月 400 万条记录,一年就是 4800 万条记录,最坏情况下每年需要 50 GB 的磁盘空间。将其改为 varchar(255) 每年可获得不到 16 GB,而 varchar(50) 每年可获得 ~6.5 GB。

有没有比我更优秀的 DBA 可以告诉我我是否错了?

编辑#2


根据此处的要求,表定义如下:

Type             Size
int              4
int              4
int              4
datetime         8
Decimal(19,5)    9
int              4
int              4
varchar(1000)    1000
int              4
int              4
smalldatetime    4
int              4
int              4
int              4
int              4
decimal(9,2)     5
smallint         2
datetime         8
decimal(18,2)    9
bit              1
int              4
int              4

如果所有字段都用到最大的话,总共是 1098 个字节。

答案1

我不知道有什么工具可以做到这一点;但是,虽然这有点麻烦,但您可以根据行的列类型自行计算。如果您输出脚本create table并将它们输入到脚本中,您可能可以编写一个 powershell 来帮助您。

也许可以编写一个脚本,搜索所有数据int并将其添加到计数器中,对每种数据类型也执行相同的操作,然后您可以进行一些快速乘法来计算出大致的表大小。获取所有varchar(50)char(10)数据类型的大小可能有些棘手,但同样,一些 powershell 魔法可能会有所帮助。

更新


我也得出了和你一样的结论,最坏的情况下,每条记录占用 1098 字节。你知道你的数据,但根据你的编辑,你的数据很有可能会比varchar(1000)许多记录的数据要少。在这种情况下,这将为你节省每条记录的空间,所以在最好的情况下,每条记录占用 98 字节。如果我是你,我会用这些信息来检查你已经拥有的数据,并得出这个字段平均长度的基线,varchar(1000)并使用该平均值来计算一个不错的中位数。

相关内容