在实践中,我们发现默认的NHibernate(v2.0& 2.1)FlushMode = Auto非常昂贵。回顾一下NHibernate源代码表明,用于确定需要刷新内容的算法依赖于在会话中循环遍历所有实体的强力,这种情况发生在事务中的每个查询运行中。
在某些生产场景中,对多个项目进行了更新,通过多次查询,我们看到FlushMode = Auto与FlushMode = Commit相比,该过程延长了100倍。
执行涉及多个更新,多个查询等的“复杂”会话逻辑时使用FlushMode的任何想法/建议/最佳做法。
有关在nHibernate中优化AutoFlush算法的任何想法吗?
答案 0 :(得分:6)
这种缓慢是一个已知问题,并在NH中作为NH-1365/GitHib Issue 857
进行跟踪NH中有三种冲洗模式: