将.NET应用程序修复为SQL Server超时问题并提高执行时间的清单

问题描述:

用于缩短.NET代码和SQL Server之间执行时间的清单。 任何从基本到奇怪的解决方案都是值得赞赏的。将.NET应用程序修复为SQL Server超时问题并提高执行时间的清单

代码:命令和avgbody连接

更改默认的超时时间。

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

使用活动监视器寻找阻止/锁定Jay Shepherd

SQL服务器:

当心参数通过AlexCuse在存储过程中嗅探。

谨防由Martin Clarke动态增长的数据库。

使用Profiler来寻找需要更长的时间,然后100毫秒BradO任何查询/存储过程。

将事务超时时间增加avgbody

将转换为动态存储过程转换成静态的由avgbody

检查服务器的繁忙程度是Jay Shepherd

首先 - 检查正在运行的实际查询。我通过我的程序安装时使用了SQL Server Profiler,并检查我所有的查询都使用了正确的连接和引用键。

几个简单的...

  • 检查处理器使用服务器的,看它是否只是太忙
  • 查找阻断/锁定与活动监视器
  • 网络问题/性能怎么回事

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

但是,我建议首先尝试解决技术问题,并且只有当您没有选择时才从事人类行为。

在过去的我的一些解决方案已经:

  1. 修复默认时间出的SqlCommand的设置:

    昏暗mycommand的作为新的SqlCommand(“[DBO]。[spSetUserPreferences]”,MyConnection的)

    myCommand.CommandType = CommandType.StoredProcedure

    myCommand.CommandTimeout = 120

  2. 增加连接超时字符串:

    数据源= MyDatabase的;初始目录=匹配;持续安全信息= TRUE;用户ID =用户;密码=密码; 连接超时= 120

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

    在管理工作室的Tools> Option> Designers中,即使“为表设计器更新覆盖连接字符串超时值”,也会增加“事务超时后:”选中/取消。

  4. 将转换为动态存储过程转换成静态的

  5. 使代码调用存储过程,而不是在写代码的内联SQL语句。

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

我喜欢用SQL Server Profiler为好。我喜欢设置在工作日的中间良好的时间15-30分钟大块他们的数据库服务器上的客户端站点跟踪并记录所有的查询/存储的特效与持续时间> 100毫秒。无论如何,这是我“长期运行”查询的标准。

奇怪的一个应用到SQL Server 2000,可能今天仍然适用:

确保您是不是要动态增长的数据库中生产。有一点,分配额外空间和正常负载运行所花费的时间将导致您的查询超时(并且增长太快!)

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

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

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