【问题标题】:NHibernate Transaction Creation is slowNHibernate 事务创建很慢
【发布时间】:2013-01-24 18:25:29
【问题描述】:

我使用 Fluent NHibernate 1.3.0.733,它使用 NHibernate 3.3.2.4000。 当我使用session.BeginTransaction()时,创建一个事务大约需要500毫秒 有时它也会超过一秒钟。有什么办法可以减少这个时间?


这是在一个带有 MS SQL Server 的 ASP.NET 应用程序中。 会话是使用在应用程序启动时创建的 SessionFactory 创建的。 我使用 ASP.NET 模块实现了每请求会话模式。 一切安好。会话创建不需要时间,但事务创建很慢。

【问题讨论】:

  • 您确定会话正在持续吗?工厂初始化需要一段时间——你运行的是什么架构?你能提供(很多)更多细节吗?

标签: nhibernate transactions fluent-nhibernate


【解决方案1】:

对于简单的查询和更新,一个完整的请求可能会在 10-20 毫秒内执行,包括开始和提交事务的时间,所以在这种情况下显然有些问题。

使用默认配置,BeginTransaction() 是 NHibernate 尝试从底层 ADO.NET 获取连接的时间。连接池是否禁用?您对 sql server 的网络延迟是否很高?是否涉及分布式事务协调器?

如果使用相同的连接字符串直接打开一个 ADO.NET 连接和事务会怎样?

【讨论】:

  • 谢谢。这是正确的。在 Web.config 中禁用了连接池。它在开发人员机器上,直到你回答我才考虑。启用后,会话和事务的创建时间减少到几毫秒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 2018-10-17
  • 2015-04-30
相关资源
最近更新 更多