首页 文章

SQL Server 2008:合理的压力测试场景

提问于
浏览
1

我正在使用JMeter对SQL Server 2008执行压力测试 .

我希望改进每秒必须提供20个请求的存储过程 .

该过程采用xml参数并返回xml结果 .

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

我的主要疑虑是:

  • 重新编译程序执行计划(这可能会减慢程序)

  • 从磁盘中提取数据(并非所有必要的数据都可以保存在主存储器中)

1 回答

  • 3

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

    有许多因素会影响性能:

    • Hardware :您需要针对您定义目标的相同硬件(每秒20次调用)运行测试 . 这包括磁盘配置,冗余,集群,......这并不总是可行的,因此您需要尽可能接近它,但是测试环境越不同,结果就越不现实 . 这意味着,例如,如果使用2个CPU而不是4个,则无法相应地调整参数 .

    • Data load :就您需要测试的记录数而言,理想情况下,您可以在表中预期的最大行数的30%-40%左右 .

    • Data and index distribution :使用预设或完全随机的数据加载服务器是一个常见错误 . Both are wrong . Value 的分配必须是现实的 . 例如,婚姻状况的分布在所有可能的值上都不相同,因此您需要设计数据生成以包含此值 .

    • Index fragmentation :这是一个艰难的问题 . 通常情况下,索引会在一夜之间重建,但在一天中,索引会变得支离破碎,因此在这些时间内,性能会有很大差异 .

    • Concurrent load :服务器可以为您提供每秒20个请求,如果它是您对数据库进行的唯一呼叫,但是一旦您开始进行其他呼叫,它就会崩溃 . 负载需要包括系统的 other related 部分 .

    • Operation Load :如果请求完全相同,那么每秒进行20次调用绝对没有意义 . 您需要使用数据生成技术来使请求变得现实而不是纯粹随机 .

    如果你正在使用C#,我已经完成了这个工具,这可能会帮助你创建realistic random data .

相关问题