使用 SQL Server 进行性能调优

Posted

技术标签:

【中文标题】使用 SQL Server 进行性能调优【英文标题】:Performance tuning with SQL Server 【发布时间】:2010-12-20 21:00:28 【问题描述】:

我试图联系我正在阅读的一本关于 SQL Server 查询性能的书的作者,但书中提供的电子邮件地址似乎不再存在。所以我决定问问社区。我正在粘贴我在下面写的消息。提前致谢。

======

我已经购买了您的书(SQL Server 2008 Query Performance Tuning Distilled),并且了解到我的 SQL Server Express Edition 不支持运行必要的性能测试所需的许多重要工具。正如您所说,重要的是要有一个初始分析来检查有多少查询会损害数​​据库性能。因为我没有分析器,所以我不知道。我已经下载了一个免费的项目工具,但恐怕我没有得到我需要的信息。在我看来,使用 SET STATISTICS 时应该显示的信息也不会出现在 SQL Server Express 中。

哪一个 SQL Server 的最低版本可以为我提供运行书中建议的测试的工具?是开发者版吗?它是否提供了我学习示例所需的一切?

另外,在 Express 版之上安装新版本(如开发者版)有什么问题吗?还是必须卸载以前的版本?

我希望我不会打扰太多。我还想祝贺你出版了一本关于如此重要​​主题的好书。

【问题讨论】:

@NTDLS:你是否有什么理由翻一堆旧帖子只是为了添加一些晦涩和不必要的标签?看起来你在搞徽章,如果我不亲自回滚这些编辑,其他人可能会。 我最近不编辑它t understand your comment. What is the problem? This topic is parked for a long time. I havent。你想说啥?你是在说你上面的评论还是我的帖子?谢谢。 【参考方案1】:

您可以以 49 美元的价格购买开发人员版,这将为您提供完整的 SSMS(管理工作室)、分析器等工具。您可以在 Express 之上安装它(您可以在同一个服务器上拥有多个 SQL Server 实例机器),但如果您只在生产中支持 Express,我将只安装客户端工具,而无需安装新的 SQL Server 实例,该实例恰好支持您在移植代码时无法实际使用的功能.

但是,您可以在没有探查器和完整版本的 SSMS 的情况下完成很多关于故障排除性能的分析。您可以download SSMSE (the express version of Management Studio) here,然后您可以从那里对 DMV 运行查询、检查查询计划并启动服务器端跟踪。无论如何,服务器端跟踪优于使用分析器 UI。服务器端跟踪可以将您在书中读到的所有性能指标记录到文件或表中,然后有一些函数可以轻松使用这些数据。

事实上,你甚至可以在没有 UI 的情况下完成许多这样的事情,但开始时最好使用查询窗口,所以我会下载 Management Studio Express 并四处寻找。

PS 我让格兰特知道你在问。

【讨论】:

嘿!谢谢你的详细回答。我会检查他们。我不确定我是否会购买开发者版。我看到的唯一选择是让它在 MS Store 中寄给我。我不知道我是否可以下载代码...再次感谢。 您可以从多家在线供应商处购买开发者版,例如亚马逊 (is.gd/54qYw) 和 buy.com (is.gd/54qZk)。除了获得 MSDN 订阅之外,我不知道有什么方法可以下载代码而不是等待 DVD 交付。但是您可以尝试四处搜索,我知道一些在线软件销售商会在您购买时向您提供 ISO(只是不能保证那些销售合法软件的公司)。 Aaron 恰好是我在回复中提到的另一位 MVP。我回复后他的答案出现了,他的回答很准确,基本上和我说的一样。【参考方案2】:

我知道另一位 MVP 将这个帖子发给了 Grant Friitchey,但与此同时,一些人对你在帖子中所说的内容发表了看法。

First SQL Express 支持运行 Profiler 的 SQL Trace。您可以手动定义跟踪并仍然收集调整所需的信息,只是需要更多的工作。 SET STATISTICS 也可以在 Express 中使用,就像在标准版或企业版中一样。如果你有一个例子,它对我来说是新的。

对于您的开发者版问题,是的,它们可以并排安装在不同的命名实例中。但是,您只能将 Developer Edition 用于开发,它不能用于在生产应用程序中提供数据,并且当您将 Express Edition 用于最终部署时,您必须小心,因为 Developer 已使用 Express Edition 中的功能。企业版的所有功能。

您应该只能在 Express Edition 上进行相同级别的调整,只是需要做更多的工作。如果您购买了开发人员版许可证,您实际上只需要安装工作站工具,而不需要实际的数据库引擎。 Profiler 等是工作站工具中的工具,而不是引擎本身的一部分。

【讨论】:

谢谢!我将抓住示例并在明天发布。抱歉,差点睡在键盘上 ;-) 嗨,很抱歉我花了这么长时间才回到这个话题。我希望看到的那种信息(Grant 在他的书中一直涵盖)是执行计划的文本结果信息。例如:表'员工'。扫描计数 1,逻辑读取 9 CPU 时间 = 16 毫秒,经过时间 = 103 毫秒。我无法获得这条宝贵的信息,包括 SQL Server 上的读取次数。我怎样才能打开它?谢谢! 即 STATISTICS IO 和 STATISTICS TIME 信息,通过打开它们各自的设置选项并运行查询来收集客户端。您可以从跟踪中获得的最好结果是来自 Showplan Statistics Profile 事件的 STATISITICS PROFILE,它与其他两个不同。读取次数和 CPU 时间将包含在语句和批处理级别事件的跟踪输出中的这些列中。【参考方案3】:

Profiler 很好用,但解释计划更容易理解。解释计划在其他数据库(Oracle、mysql 等)中也很常见。不要陷入使用特定工具的困境。

Developer Edition 是 Enterprise Edition - 不同之处在于许可证不允许您将 Developer Edition 用于商业用途。

是的,您可以在同一个工作站上安装 SQL Server 版本 - 如果您愿意,可以并排安装。它适用于迁移到 SQL Server 的其他版本和版本之类的事情。除非您同时使用这两个实例,否则我不建议您这样做,因为未使用的实例将使用在其他地方提供更好服务的系统资源。

【讨论】:

【参考方案4】:

部分回答您的问题

SQL Server 开发版相当于企业版,但只有开发许可证。

您可以同时安装 Express 版和 Developer/Enterprise 版。您不必卸载 Express 版本。

【讨论】:

【参考方案5】:

Aaron 已经尽我所能回答了这个问题,可能更好。

我可以为您提供另外一点信息。书中的电子邮件应该被授予-at-gmail.com。根据需要取消混淆。

我会以评论的形式回复,但我并没有太多,所以我在这里根本没有代表。

【讨论】:

以上是关于使用 SQL Server 进行性能调优的主要内容,如果未能解决你的问题,请参考以下文章

sql server 性能调优之 死锁排查

(转)SQL Server 性能调优(cpu)

SQL Server 性能调优 之执行计划(Execution Plan)调优

sql server 性能调优之 资源等待 LCk

SQL Server性能调优——报表数据库与业务数据库分离

sql server性能调优