用于修复 .NET 应用程序以解决 SQL Server 超时问题并缩短执行时间的清单

Posted

技术标签:

【中文标题】用于修复 .NET 应用程序以解决 SQL Server 超时问题并缩短执行时间的清单【英文标题】:A checklist for fixing .NET applications to SQL Server timeout problems and improve execution time 【发布时间】:2010-09-09 04:52:54 【问题描述】:

用于改进 .NET 代码和 SQL Server 之间的执行时间的清单。 任何从基本到奇怪的解决方案都值得赞赏。

代码:

通过avgbody更改命令和连接中的默认超时。

使用存储过程调用而不是avgbody的内联sql语句。

使用Jay Shepherd 的活动监视器查找阻塞/锁定。

SQL 服务器:

注意AlexCuse 在存储过程中的参数嗅探。

注意通过Martin Clarke动态增长数据库。

使用 Profiler 查找任何查询/存储过程,通过 BradO 花费超过 100 毫秒。

将事务超时时间增加avgbody。

通过avgbody将动态存储过程转换为静态存储过程。

通过Jay Shepherd查看服务器的繁忙程度。

【问题讨论】:

【参考方案1】:

过去我的一些解决方案是:

    修复sql命令的默认超时设置:

    将 myCommand 作为新的 SqlCommand("[dbo].[spSetUserPreferences]", myConnection)

    myCommand.CommandType = CommandType.StoredProcedure

    myCommand.CommandTimeout = 120

    增加连接超时字符串:

    Data Source=mydatabase;Initial Catalog=Match;Persist Security Info=True;User ID=User;Password=password;Connection Timeout=120

    在 sql-server 2005 中增加事务超时

    在 management studio 的工具 > 选项 > Designers 中增加“事务超时时间:”即使“覆盖表设计器更新的连接字符串超时值”已选中/未选中。

    将动态存储过程转换为静态存储过程

    让代码调用存储过程,而不是在代码中编写内联sql语句。

【讨论】:

【参考方案2】:

对于响应时间长的抱怨,一个奇怪的“解决方案”是有一个更有趣的进度条。意思是,根据用户的感觉工作。一个示例是 Windows Vista 等待图标。那个快速旋转的圆圈给人的感觉是事情进展得更快。 Google 在 android 上使用了相同的技巧(至少是我见过的版本)。

但是,我建议先尝试解决技术问题,然后仅在别无选择的情况下处理人类行为。

【讨论】:

【参考方案3】:

您是否使用存储过程?如果是这样,您应该注意参数嗅探。在某些情况下,这可能会导致一些非常长时间运行的查询。一些阅读:

http://blogs.msdn.com/queryoptteam/archive/2006/03/31/565991.aspx

http://blogs.msdn.com/khen1234/archive/2005/06/02/424228.aspx

【讨论】:

【参考方案4】:

首先 - 检查正在运行的实际查询。我在通过程序进行设置时使用 SQL Server Profiler,并尽可能检查我的所有查询是否使用正确的连接和引用键。

【讨论】:

【参考方案5】:

一些快速的...

检查服务器的处理器使用情况,看看它是否太忙了 使用活动监视器查找阻塞/锁定 网络问题/性能

【讨论】:

【参考方案6】:

运行 Profiler 以测量查询的执行时间。 检查应用程序日志记录是否存在任何死锁。

【讨论】:

【参考方案7】:

适用于 SQL Server 2000 的一个奇怪的问题可能今天仍然适用:

确保您没有尝试在生产环境中动态扩展数据库。分配额外空间和正常负载运行所需的时间会导致查询超时(以及增长!)

【讨论】:

【参考方案8】:

我也喜欢使用SQL Server Profiler。我喜欢在工作日中间的 15 到 30 分钟的时间内在其数据库服务器上的客户端站点上设置跟踪,并记录所有持续时间 > 100 毫秒的查询/存储过程。无论如何,这是我对“长时间运行”查询的标准。

【讨论】:

以上是关于用于修复 .NET 应用程序以解决 SQL Server 超时问题并缩短执行时间的清单的主要内容,如果未能解决你的问题,请参考以下文章

奇怪的间歇性 SQL 连接错误,重新启动时修复,3-5 天后恢复 (ASP.NET)

openwrt 安装 ser2net 配置

用于 XML 和 SQL Server 集成的 .NET 应用程序

SQL Server(MSSQLSERVER)无法启动怎么解决?

Sql注入请求体[关闭]

ORACLE常用性能监控SQL