0

我在我们的生产环境中运行 Nh-Prof,发现打开 NHibernate 会话、开始事务和提交的时间有时会超过 4 秒,即使数据库没有状态/查询。

** 我知道打开事务并无缘无故地提交它(没有声明)是一个错误。

这是我在 Nh-Prof 中看到的:

begin transaction with isolation level: Unspecified
commit transaction

有什么建议么?

4

1 回答 1

1

最可能的原因:

使用的会话是“完整的”对象,并且在提交时它会检查每个对象是否已更改以生成更新语句。即使没有任何改变,支票也是昂贵的。

您可以检查session.GetSessionImplementation().PersistenceContext.EntitiesByKey.Count那里有多少对象。

你可以做些什么:

  • 不要使用此会话加载只读数据(例如填充只读网格)
  • 在交易中不再需要且未更改的对象上使用 session.Evict
于 2015-01-16T08:05:09.783 回答