在99%只读的NHibernate Web应用程序中性能不佳

Tar*_*haf -1 nhibernate performance castle-activerecord

我目前正在调查ASP.NET MVC Web应用程序,据报道该应用程序在负载下性能较差.(但是加载只是每秒几个请求).

我们使用MySQL + NHibernate + Castle ActiveRecord进行映射.NHibernate会话在每个会话开始时打开,并在视图中保持打开状态.

我已经优化了数据访问模式,以避免在可能的情况下选择N + 1问题.

现在我正在考虑的是..在每个请求上打开一个数据库事务并在最后提交.在99%的请求(MVC操作)中,不必将数据写入数据库.

  1. 是否有可能,您是否在早期关闭会话/交易中看到了好处,甚至将会话标记为只读?
  2. 数据库锁定是否会成为瓶颈?如果是这样,是否可以明确地避免至少为只读事务锁定?

Sly*_*Sly 6

您应该验证您的应用程序没有从DB加载大量数据.即使所有选择n + 1已解决,您也可以加载数百万条记录,而且速度非常慢.

使用NHibernate Profiler验证您的页面.它会提出优化建议.如果没有,可能NH不是你的瓶颈.