2011-03-31 55 views
1

我正在用JMeter在SQL Server 2008上执行压力测试。SQL Server 2008:合理的压力测试方案

我希望改进一个存储过程,每秒处理20个请求。

该过程需要一个xml参数并返回一个xml结果。

我应该只使用一个参数值还是测试多个场景?

我主要怀疑有:程序执行计划的

  1. 重新编译(这可能会在过程减慢)
  2. 提取从磁盘的数据(不是所有需要的数据可以在主存储器中保持)

回答

3

在SQL Server中设计一个真实的压力测试/负载测试是一门艺术。

有许多因素可能影响性能:

  • 硬件:你需要在你对你已经确定你的目标(每秒20个呼叫)在相同的硬件测试。这包括磁盘配置,冗余,集群......这并不总是可能的,因此您需要尽可能地使它尽可能接近,但是您的测试环境变得越不同,越不切实际的结果。这意味着,例如,如果使用2个CPU而不是4个,则不能相应地调整参数。

  • 数据加载:根据您需要测试的记录数量,最好在表格中预计最大行数的30%-40%。

  • 数据和指数分布:这是一个常见的错误与预设完全随机数据加载的服务器。 两者都是错误的。价值的分配需要现实。例如,婚姻状况的分布在所有可能的值中都不相同,因此您需要设计数据生成来包含这一点。

  • 索引碎片:这是一个棘手的问题。通常情况下,指数是在一夜之间重建的,但在一天的过程中,指数会变得分散,因此在这段时间内表现可能会非常不同。

  • 并发负载:服务器可以为您提供每秒20个请求,如果您正在为数据库的唯一呼叫,但只要你开始做其他调用,这一切散花。该负载需要包括其他相关的系统的部分。

  • 操作负载:如果请求全都相同,每秒发出20个呼叫绝对没有意义。您需要使用数据生成技术来使请求不是纯粹随机的。

如果您使用的是C#,我已经完成了此工具,但可能会帮助您创建realistic random data

+0

非常好的建议,谢谢。我强调生产,因此,它是一样的。而且,没有改进的存储过程与给我真实数据的测试并行工作。我唯一缺少的是*操作负荷*,我现在正在改进。 – Tim 2011-03-31 09:22:45