代码之家  ›  专栏  ›  技术社区  ›  cbp

NHibernate何时导致Sql:BatchStarting/Sql:BatchCompleted

  •  2
  • cbp  · 技术社区  · 15 年前

    我注意到NHibernate创建的一些查询是作为批处理执行的,而其他查询则不是。当我使用Sql Server事件探查器分析数据库时,这些查询的事件类型列为“Sql:BatchStarting”,后跟“Sql:BatchCompleted”,而不是简单的RPC:Completed。

    为什么有些语句是作为批处理运行的,而有些则不是?

    NHibernate如何决定哪些查询应该作为批处理执行?

    它似乎以批处理的方式执行许多单个查询—为什么会这样?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Torkel    15 年前

    当插入同一类型的多个项时,nhibernate将根据批大小设置分批执行此操作,这实际上很难在SQL Profiler中检测到,因为它们看起来是单独的RPC调用,但实际上是在一次调用中发送到服务器的。

    查看正在批处理的内容的最佳方法是使用NHProf。

    下面是blogpost,它详细描述了NHibernate中的批处理以及如何描述正在发生的事情: http://www.codinginstinct.com/2009/08/profiling-nhibernate-batching.html