软件带宽/数据库增长公式

时间:2009-03-02 21:16:46

标签: .net database performance architecture networking

是否有任何行业标准公式或经验法则用于确定:

  1. 应用程序带宽使用/要求
  2. 数据库增长要求
  3. 我最近开始管理一个新的.NET 3.5 / SQL Server项目,并且在确定应用程序在存储和带宽方面需要的确切内容时,希望采用比以前更加结构化的方法。如果有人在那里有任何指示我会非常感激!

3 个答案:

答案 0 :(得分:1)

我不是SQL Server专家,但总的来说,对于数据库大小调整,最好的方法是稍微了解一下架构。例如,数据库中是否存在分区?是否有很多索引等 现在将每个事务中数据库的数量乘以每小时的事务频率。这给出了每小时进入数据库的记录总数。将其与平均行大小相乘,这提供了数据库的大小,而没有分区和索引空间开销。要计算分区开销,需要了解分区的类型,如范围分区或散列分区等,每小时或每天将创建的分区数,并为分区增加空间开销。通常这个数字需要增加50%才能估算出数据库的大小。 在网络的情况下,有很多方法可以做到这一点。我运行etheral来捕获网络流量。如果您捕获网络流量,它就会变得有趣 - 数据的季节性如何 - 比如小时数,繁忙时间带宽的最大使用量等等。那么您需要一个好的工具来进行预测 - 比如说它将处理数据中的季节性,了解数据的趋势并预测如果增加负载会发生什么。使用y = mx + c的简单图形和线拟合曲线也将对您有所帮助。

答案 1 :(得分:1)

首先披露:我为Quest Software工作,这是一家进行绩效管理和容量规划的公司。

有很多产品可以满足这些需求。 Quest提供了一些功能,例如Spotlight for SQL Server,Spotlight for IIS,Capacity Manager for SQL Server等。没有单一的公式或经验法则,因为系统中的每个组件对加载的反应都不同,并且您存储的每个组件的扩展方式都不同。

例如,如果您将销售数据存储在数据仓库中,您的销售数据将会非常线性增长。这是一个简单的公式:

(开放日)*(每日交易)*(每笔交易项目)

当您第一次开店时,每天的交易量相当低,但随着业务的传播,每天的交易量会增加。如果您开始携带更多物品(例如亚马逊从书籍到一切),您的每笔交易项目也可能会增加 - 但不一定。随着时间的推移,随着您的报告需求的增长,您将实施汇总表以包含有关您的客户,人口统计数据等的数据,并且这也会改变您存储的数据量。

另一方面,如果您正在构建Web过滤应用程序,则公式围绕每个公司拥有的员工数量。随着时间的推移,人们的冲浪量会大致相同,但是这个公式会受到你是否会雇用更多人或让人们失业的影响。

如果您确定公式来预测数据增长,那么该公式对于预测您的CPU需求或带宽需求并不一定有用。

因此,每个容量规划产品都有自己的公式集。例如,Capacity Manager只有六个不同的公式,只是为了预测磁盘增长,而且甚至没有谈论CPU或内存需求。在大商店中,您会发现不同的公式可以更好地适用于不同类型的数据。一般来说,我发现购买具有所有这些公式的现成产品更有效,而不是重新发明轮子成为预测公式的专家。 (我知道,我知道,你希望我这么说,因为我为供应商工作,但在我来Quest工作之前我作为DBA买了Capacity Manager,呵呵。)

答案 2 :(得分:0)

不幸的是,我会指着你Parkinson's Law of Data

但是,对于数据库中的每个表,我试着了解平均记录大小(特别是在处理可变长度字段(如varchars)时),然后将其乘以您希望在一年内添加的记录数。然后我将它们全部加在一起,然后向上舍入到最高位数,并将结果加倍。这为开销和增长留下了足够的空间。

 round_up_to_one_sig_digit(sum(average_table_row_size 
                             * num_rows_in_one_year)) * 2

类似的方法适用于网络容量,但你会遇到人类和网络的一些特点。它们并非都以平均间隔登录(因此您在白天/傍晚和清晨的山谷中都会达到峰值。您也不希望超过80%的网络容量或性能只是普通坦克碰撞等。)