分析SQL Server性能问题?

3
我正在使用VSTS 2008 + C# + .Net 3.5 + ASP.Net + SQL Server 2008 Express进行开发工作。我的工作平台是32位Windows Server 2003。我遇到的问题是,像选择/创建一个简单表格这样的SQL语句在SQL Server Management Studio中非常缓慢。
另外,我认为这可能是机器特定的问题,因为相同的代码在另一台机器上可以正确运行。但我不能百分之百确定。也许这台机器触发了我的代码中的某个错误?
有什么想法来分析并找出低性能瓶颈吗?
4个回答

3
一个好的起点是使用SQL Server Profiler来识别长时间运行的查询。
一旦你有了哪些查询有问题的想法,你可以使用SQL Server Management Studio来检查它们的查询计划,看看是否需要添加任何索引等。

我们可以在 SQL Server (免费) Express 版本中使用 SQL Server Profiler 吗?我有所怀疑。 :-) - George2
1
SQL Server Profiler是随SQL Server一起提供的工具。它不适用于Express版本,但如果您在另一台机器上拥有完整的SQL Server,则可以对远程Express数据库进行分析。 - Mark Seemann
1
通过排除法来检测您是否有 SQL Server 或其他问题。首先使用 Profiler 对 SQL Server 进行分析,因为它非常容易使用。如果您无法在数据库中找到问题,则必须在其他地方寻找,但这些问题可能更难以跟踪,这就是为什么我建议从对数据库进行分析开始。 - Mark Seemann
1
如果您不在该域上,则需要在其他域上以适当的用户身份运行,或者如果启用了SQL Server用户名/密码身份验证,则使用它。 - Mark Seemann
1
最简单的识别问题的方法是查看查询时间。寻找运行时间长的查询。 - Mark Seemann
显示剩余2条评论

1
除了之前的答案,如果您的帐户有权限,您可以在查询运行缓慢时监视数据库对象上的锁定。此外,您可以运行索引调整向导以查看其建议。

如何检测是SQL Server(还是我的代码问题)还是机器环境问题影响了SQL性能? - George2
1
如果没有锁定,SQL配置文件看起来很好,并且似乎有所有正确的索引,那么您必须开始查看代码/环境。查询在同一台机器上的企业管理器中运行良好吗? - Jeremy Samuel
"在查询运行缓慢时,监视数据库对象上的锁定" 和 "您可以运行索引调整向导" -- 您能演示一下吗? - George2
"SQL 个人资料" -- 无法从 SQL Server Express 版本中使用此工具。 - George2

1

如果您认为这是机器特定的问题,一个好的开始是监视Sql Server使用的RAM,执行此sentence

DBCC MEMORYSTATUS;

我们可以在 SQL Server(免费)Express 版本中使用这个命令吗? - George2

1
如果它在某些机器上运行良好,但在其他机器上运行较慢,请确保运行速度较慢的机器具有与更快机器相同的索引(索引不经常转移到其他机器上,这很令人惊讶),并更新统计信息。
如果较慢的机器硬件不够强大,速度也会慢得多。
Profiler和执行计划还可以帮助识别瓶颈和性能问题。
还要检查死锁,通常情况下,单独运行良好的代码可能会与生产服务器同时运行的其他内容发生冲突。
此外,许多开发人员在比最终生产机器负荷小得多且数据少得多的机器上创建代码,然后当代码在生产环境中变慢时感到惊讶。如果您在开发机器上没有完整的数据集,则存在编写性能差的代码的严重风险。如果您没有进行负载测试,或许应该开始做了。
如果最终版本将不是基于Express开发,那么为什么要使用Express进行开发呢?购买开发人员版本,并拥有开发过程中所需的所有工具以进行调整和监控。
运行缓慢的机器上是否运行其他应用程序?通常,在一台机器上除了SQL Server不应运行其他任何内容,因为SQL Server将需要该机器的所有内存。

"分析器和执行计划也可以帮助识别瓶颈和性能问题。" -- 我想了解更多关于这个主题的内容,有参考文献吗? - George2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接