当前位置: 首页 > 编程语言 > C#

连接池比保持一个连接打开更慢分享

时间:2023-04-10 18:57:03 C#

连接池比保持一个连接打开要慢我在我们创建的客户端应用程序中观察到连接池性能的一个有趣行为。当用户单击某个对象时,会从数据库中加载更多特定于对象的数据。根据对象的不同,每次命中需要10到30次查询。这是使用连接池完成的,每个查询都是从池中的一个新连接调度的,并在查询运行后关闭连接。我已经在性能优化分析器中对查询进行了概要分析,发现那里有很多审核登录/注销条目。此外,尽管查询本身工作正常(仅索引搜索/扫描运算符),但性能并不是最佳的。只是为了尝试一下,我禁用了池并修改了代码,以便为每个客户端应用程序保留一个连接并重新使用它。这使整个应用程序的响应速度更快,并且所有审核登录/注销条目都从分析器中消失。怎么会这样?连接不应该保持打开状态,还是它们实际上保持打开状态至少不那么慢?是否有可能是我们错误地使用了SqlConnection类导致池被禁用?我读过其他关于池的帖子,但没有发现任何关于池连接和重用相同连接之间感知速度差异的信息。SqlConnectioncon=newSqlConnection(_connectionString);连接切换到提供事务功能的包装器类Session。类会话{会话(连接);中止();犯罪();连接在Abort()和Commit()中关闭。其中之一总是被调用。如果我理解正确-每个会话的连接都是“新的”。如果您希望所有实例共享连接,则应将其设置为静态。把它放在global.asax中:publicstaticSqlConnectioncon;protectedvoidApplication_Start(objectsender,EventArgse){con=newSqlConnection(_connectionString);这样您将在会话之间共享相同的连接。以上是C#学习教程:连接池比保持连接慢。所有分享的内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: