2013-05-13 103 views
0

我試圖加快一些Web服務調用,並懷疑打開很多NHibernate連接是問題。我知道打開一個到SQL服務器的新連接是非常耗時和昂貴的。但我認爲NHibernate會保留一個連接(因此只需要打開一次),即使我在很多地方打開了一個nhibernate會話。NHibernate SQL服務器連接池?

所以這裏有幾個不同的部分來這樣一個問題:

  • 如果我創建一個會話並處理它,然後重新創建它,它需要同時圍繞加載第二次,或者是sql服務器連接仍然在後臺使用?像這樣:
 
    using (var session = new SessionFactory.OpenSession()) {... }; 
    using (var session2 = new SessionFactory.OpenSession()) {.. }; 
  • 如果我創建一個使用語句中的會話,然後創建statment內另一個(不設置它)將它不需要旋轉起來完全是另外一個SQL Server連接在後臺?像這樣:
 
    using (var session = new SessionFactory.OpenSession()) 
    { 
     using (var session2 = new SessionFactory.OpenSession()) {.. }; 
    }; 
  • 最後,是在SQL Server連接跨Web服務調用保存?即,如果我在Web服務請求調用#1上打開一個會話,Web服務請求調用#2是否會更快,因爲隱藏的連接位於後臺的某個位置,它將拾取並使用它?

我知道,在大多數情況下,使用一個會話可能是最好的,但是一個非常大的程序寫了很多新的會話打開,我試圖找出是否真的可以節省很多表現重寫這個或沒有。

謝謝!

回答

1

如果您在會話中打開會話,NHibernate很可能不會工作。連接通常是合併的,一旦沒有使用,它就會返回到池中。如果池沒有可用的連接,則創建新的連接。我建議查看查詢優化和緩存。連接不會加快速度。