NHibernate SQL server连接池?

NHibernate SQL server连接池?,nhibernate,Nhibernate,我试图加快一些web服务调用的速度,并怀疑打开许多NHibernate连接是问题所在。我知道,打开到SQL server的新连接非常耗时且昂贵。但我认为即使我在许多地方打开了NHibernate会话,NHibernate也会保留一个连接(因此只需要打开一次) 所以这个问题有几个不同的部分: 如果我创建了一个会话并将其处理掉,然后再次创建它,那么第二次加载是否需要相同的时间,或者sql server连接是否仍在后台使用?像这样: 使用(var session=newsessionfactory

我试图加快一些web服务调用的速度,并怀疑打开许多NHibernate连接是问题所在。我知道,打开到SQL server的新连接非常耗时且昂贵。但我认为即使我在许多地方打开了NHibernate会话,NHibernate也会保留一个连接(因此只需要打开一次)

所以这个问题有几个不同的部分:

  • 如果我创建了一个会话并将其处理掉,然后再次创建它,那么第二次加载是否需要相同的时间,或者sql server连接是否仍在后台使用?像这样:
使用(var session=newsessionfactory.OpenSession()){…}; 使用(var session2=new SessionFactory.OpenSession()){..};
  • 如果我在using语句中创建一个会话,然后在该语句中创建另一个会话(而不处理它),它是否不需要在后台启动整个其他sql server连接?像这样:
使用(var session=new SessionFactory.OpenSession()) { 使用(var session2=new SessionFactory.OpenSession()){..}; };
  • 最后,sql server连接是否跨web服务调用保留?也就是说,如果我在web服务请求调用#1上打开一个会话,web服务请求调用#2会更快吗?因为隐藏的连接位于后台的某个地方,它将拾取并使用它
我知道,在大多数情况下,最好只使用一个会话,但是编写了一个非常大的程序,并且打开了许多新会话,我正在试图弄清楚重新编写这个会话是否真的可以节省很多性能


谢谢

如果您在会话中打开会话,NHibernate很可能无法工作。连接通常是池化的,一旦不使用它,它就会返回到池中。如果池没有任何可用的连接,则会创建一个新的连接。我建议研究查询优化和缓存。连接不会加快速度

using (var session = new SessionFactory.OpenSession()) {... }; using (var session2 = new SessionFactory.OpenSession()) {.. }; using (var session = new SessionFactory.OpenSession()) { using (var session2 = new SessionFactory.OpenSession()) {.. }; };