代码之家  ›  专栏  ›  技术社区  ›  Jason Irwin

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

  •  2
  • Jason Irwin  · 技术社区  · 16 年前

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

    1. 数据库增长需求

    我最近开始管理一个新的.NET 3.5/SQL Server项目,在确定应用程序在存储和带宽方面的具体需求时,我希望采用比以前更结构化的方法。如果有人有任何指点,我将非常感谢!

    3 回复  |  直到 16 年前
        1
  •  1
  •   Shamik    16 年前

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

        2
  •  1
  •   Brent Ozar    16 年前

    先公开:我为 Quest Software ,一家进行绩效管理和能力规划的公司。

    有很多产品可以满足这些需求。Quest做了几个,比如spotlightforsqlserver,Spotlight for IIS,capacitymanagerforsqlserver,等等。没有单一的公式或经验法则,因为系统中的每个组件对负载的反应都不同,而您存储的每个东西的比例也不同。

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

    (营业日)*(每天交易)*(每笔交易的项目)

    另一方面,如果您正在构建一个web过滤应用程序,则公式将围绕每个公司拥有的员工数进行计算。随着时间的推移,人们冲浪的次数大致相同,但这个公式会受到你是打算雇佣更多的人还是裁员的影响。

    如果你确定了一个公式来预测你的数据增长,那么这个公式对于预测,比如说,你的CPU需求或者带宽需求,并不一定有用。

    因此,每个产能规划产品都有自己的公式集。例如, Capacity Manager 有六种不同的公式来预测磁盘的增长,而这还不包括CPU或内存的需求。在一家大商店里,你会发现不同的公式更适合不同类型的数据。总的来说,我发现买一个现成的产品更有效,因为它内置了所有这些公式,而不是重新发明轮子,成为预测公式的专家。(我知道,我知道,你会希望我这么说,因为我为一家供应商工作,但我在来Quest工作之前买了Capacity Manager作为DBA,呵呵。)

        3
  •  0
  •   BIBD    16 年前

    我不敬地指给你看 Parkinson's Law of Data .

    但是,对于数据库中的每个表,我尝试了解平均记录大小(特别是在处理可变长度字段(如varchars)时),然后将其乘以您希望在一年内添加的记录数。然后把它们加在一起,四舍五入到最有意义的数字,结果加倍。这给管理和发展留下了很大的空间。

     round_up_to_one_sig_digit(sum(average_table_row_size 
                                 * num_rows_in_one_year)) * 2