对新的 SQL Server 进行基准测试

对新的 SQL Server 进行基准测试

我们刚刚构建了一台运行 SQL Server 2005 sp3 64 位的新服务器。计划是将我们的生产数据库从现有服务器迁移到这台新服务器上。在迁移之前,我想了解一下新服务器与旧服务器相比的性能(理论上它更强大)。

考虑到 SQL Server,什么方法最适合对新服务器和旧服务器进行基准测试?

答案1

评估服务器如何响应您的应用程序的最佳方法是使用您的应用程序对其进行基准测试。不幸的是,这并不像更随意的基准测试那么容易,但它确实可以让您更真实地了解预期性能。

具体如何操作取决于你的应用程序,但一般情况是:

  1. 复制你的实时数据
  2. 运行一组常见查询来测试基线响应时间
  3. 同时运行所述查询多次以模拟几个并发的并发用户
  4. 不断增加并发级别,直到响应变慢或出现故障(超时错误、内存不足等)

这可以让你了解你的应用程序在给定硬件上的扩展情况,你可以说“在这个硬件上,我们可以为 X 个并发用户提供服务,响应时间低于 Y 秒”。为了准确起见,你需要设计一组测试查询,使其代表通常的活动平衡。这通常是通过分析用户通常做什么(基本用户登录、获取待完成任务列表、打开第一个任务、填写表格、打开第二个任务、填写表格、注销)并编写该过程的脚本来完成的,这样你就可以为许多用户多次重播这些故事(许多用户位很重要 - 如果你在每次测试中使用相同的用户并访问相同的几行数据,你将看到不切实际的高性能,因为所有内容都将从缓存中运行,而在更真实的情况下,需要磁盘访问)。

实现这种“完美”可能有点艺术性——它需要很好地了解用户如何与应用程序交互。当我们提供新版本的应用程序时,我们的一些客户将这种测试外包给专业的第三方公司,以确保我们的设置保持可扩展性和响应时间承诺,但如果您有多余的资源,可以在内部完成,而且不时这样做是个好主意,因为它可以在您将更改呈现给用户之前突出显示新功能引入的性能问题。

搜索“非功能性测试”技术,特别是“压力测试”、“负载测试”和“可扩展性测试”,了解更多信息——有一些工具可以帮助实现所有自动化,但最适合您的应用的技术/软件很大程度上取决于您的应用实际上是什么。

答案2

您可能还想了解磁盘子系统的性能。以后您可以轻松添加 RAM,但改进磁盘问题的更改往往需要破坏性修复。

SQLIO 和 SQLIOsim 等工具对此很有用。SQLIOsim 允许您创建日志和数据文件,并使用类似于 SQL Server 的磁盘活动来测试性能。

您使用的是什么操作系统?如果是 2003 或更早版本,则值得研究磁盘对齐问题。不过 2008 会帮您解决这个问题。还建议将用于 SQL 数据的磁盘格式化为簇大小为 64K。

以下视频来自 SQL Bits 会议,其中包含大量有关磁盘性能的信息

http://sqlbits.com/Agenda/event5/Designing_I_O_systems_for_SQL_Server/default.aspx

相关内容