测试存储过程的可伸缩性


14

我有一个电子邮件应用程序,将在每个页面加载时调用该应用程序以将给定用户的新消息数传送到UI。我在数据库级别测试的东西有一些变体,但是所有这些都通过存储的proc调用抽象出来。

我试图猛击数据库以查看断点(每秒请求数)。

简而言之,我有一个表,如此userId,newMsgCount,以及对userId的聚集索引。SQL应该每秒能够处理数百或数千个此类响应。我认为落后者是我的.NET应用程序。

我怎样才能使它成为一个很好的测试,以基于SQL性能获得测试结果?

是否有为此工具,我可以为其提供存储的proc名称和参数以将其打包到数据库中?

我想看看数据库是否可以返回分钟。每秒250个响应。


1
好问题。我将其扩展为更通用,然后问:如何对数据库进行负载测试?
Nick Chammas

Answers:


11

SQLQueryStress是用于小规模并发测试的出色工具,但实际上并不能胜任负载测试的工作。Microsoft提供了一个令人惊讶的鲜为人知的免费工具集,它可以应付大多数SQL Server压力测试方案RML实用程序

这些工具的简要概述:

  • ReadTrace将Profiler跟踪从.trc文件转换为.rml(重播标记语言)。
  • OStress用于针对服务器重播.rml和.sql文件。
  • ORCA(OStress重放控制代理)协调OStress的分布式实例之间的重放。
  • 记者提供绩效分析报告。

SQLCat团队提供了出色的快速入门文章,其中包括示例数据库和工作负载,使用RML实用程序9.0的Microsoft SQL Server的Precision Performance。

您可以选择进行概要分析活动以进行重播,或者可能更适合您的方案,手动启动一组.sql脚本,然后通过OStress和ORCA进行重播。

用于负载测试和调查性能问题的出色工具。


6

可以使用的一种工具是SQLQueryStress。为了快速入门,请提供:存储过程的迭代次数和线程数。然后开始压力测试。将显示诸如CPU秒,逻辑读取等指标。


4

听起来您是.NET开发人员。一种方法是编写一个使用多线程的小型应用程序,并且对数据库和存储过程只有一定数量的并发命中。在发生这种情况时进行跟踪。

如果要自动增加SQL Server的负载,请编写应用程序代码以在特定间隔内增加并发线程的数量。

那就是我要解决的方法。


为什么不使用我的开源项目Benchmark.NET并使用并行基准来编写此应用程序?
AndreiRînea2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.