性能测试 - 我应该创建多少数据

时间:2010-02-16 05:10:54

标签: sql-server performance

我对性能工程很陌生,所以我有一个非常基本的问题。

我在使用SQL Server后端的客户端 - 服务器系统中工作。该应用程序是一个巨大的税务相关应用程序,需要在峰值负载下测试性能。这意味着当我们运行与创建纳税申报和提交纳税申报相关的方案时,系统中应该有1000万纳税申报表。然后还需要创建比例数量的用户。

现在我在会议上听到我们需要创建1000万条记录来测试性能并运行5000个用户的场景,我觉得这不可行。

当谈到创建较小的数据集并推断性能规划时,我听到的一个非常常见的答案是我们需要1000万条记录,因为我们无法从较小的数据集中了解数据库或网络的行为方式。

那么如何计算大型企业应用程序的容量和测试性能而不创建峰值数据级别或运行最大数量的方案?

感谢。

6 个答案:

答案 0 :(得分:3)

就个人而言,我会尽可能多地投入数据和流量。忘记你认为你需要处理的流量。只需看看你可以处理多少流量并从那里开始。了解系统的限制比仅仅知道它可以处理1000万条记录更有价值。

也许它确实处理了1000万,但在1100万它死了可怕的死亡。或者它写得很好,并且会在它消亡之前扩展到1亿。尽管两者都通过了“千万测试”,但两者之间存在非常明显的差异

答案 1 :(得分:2)

  

现在我在会议上听到我们需要创建1000万条记录来测试性能并运行5000个用户的场景,我觉得这不可行。

你为什么这么认为?

当然,您可以(并且应该)使用有限数量的数据进行测试,但您也确实真的需要使用实际负载进行测试,这意味着要测试数量(和类型)您将在生产中使用的数据。

这只是一般规则的一个特例:对于系统或integration testing,您需要在尽可能接近生产的场景中进行测试;理想情况下,您只需复制/克隆实时生产系统,数据,配置和所有内容,并将其用于测试。这实际上就是我们所做的(如果我们在技术上可以和客户一致)。我们只运行一些SQL脚本来随机化测试数据集中的个人数据,以防止隐私问题。

由于生产数据与您测试的数据有所不同,因此会出现始终问题,这是防止(或至少限制)这些问题的唯一方法。

我已经计划并实施了报告和导入,当他们第一次接触到真实数据时,他们总是会打破或行为不端,因为总会遇到特殊情况或缩放问题。你希望在开发期间发生破坏,而不是在生产中: - )。

简而言之:

咬紧牙关,(用“玩具数据”完成所有测试后),获得一个真实的数据集进行测试。如果您没有硬件来处理它,那么您没有适合您的测试的硬件: - )。

答案 2 :(得分:1)

我会看看Redgate的SQL Data Generator。它在生成代表性数据方面做得很好。

答案 3 :(得分:0)

了解“应用性能测试的艺术/ Ian Molyneaux,O'Reilly,2009”。

答案 4 :(得分:0)

理想情况下,您的测试数据是一种真实的记录。但是对于初步近似,您可能只有几个独特的记录,并复制它们直到您具有所需的大小。然后使用ApacheBench粗略估算流量。

答案 5 :(得分:0)

为了帮助生成数据,请查看ruby faker和perl数据faker。我在生成用于测试的大型数据集方面有好运。来自redgate的SQL生成器也很好。