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