gpt4 book ai didi

c# - Linq-to-SQL 和 sp_reset_connection

转载 作者:太空狗 更新时间:2023-10-29 23:17:48 30 4
gpt4 key购买 nike

我有一个 .NET 4.0 Winform 和一个 .NET 4.0 Windows 服务,它们都通过 LINQ to SQL 连接到 SQL 2005/2008 数据库。它在我们的测试环境中运行良好且快速,具有完美的生产数据克隆,但在生产环境中,它运行非常缓慢并且 CPU 使用率和带宽使用率较低。我还注意到每天有数百次 SQL 超时,即使对于索引良好的数据库上的最小查询也是如此。所以我启动了 Profiler...

我发现在 10 分钟的负载捕获期间,sp_reset_connection 占 SQL CPU 总持续时间的三分之一和所有 SQL 调用总数的 90%。

  • 我试过禁用和启用连接池,并调整连接字符串中允许的连接数和连接超时。没有任何影响。
  • 当我遇到 LINQ 查询时,我一直在用 ADO.NET 查询替换它们。这些旧的 ADO.NET 查询永远不会超时。只有 LINQ 的。
  • 我注意到该服务器上还有其他主要性能问题,但我不确定如何与客户的系统管理员一起解决这个问题。
  • 我在运行该服务的应用程序服务器上拥有管理员访问权限。我几乎无法访问他们运行 Winform 的终端服务器,也无法访问 SQL 服务器。

  • 是什么导致 sp_reset_connection 如此频繁地运行?

  • 有没有办法在不从我的应用程序中删除所有 LINQ 的情况下绕过这些调用?
  • 有没有办法减少对该存储过程的调用次数?
  • 有没有办法减少 SQL 服务器执行这些调用所需的处理器时间?
  • 如果我禁用池并将存储的过程替换为空的过程,我会搞砸其他事情吗?

最佳答案

找到了一些关于此的其他页面,其中一个建议:

对于您的连接重置,请在使用它之前打开您的 DataContext 连接,并在最后关闭它。

db.Connection.Open()
... work...
db.Connection.Close()

关于c# - Linq-to-SQL 和 sp_reset_connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7441289/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com