2014-09-06 115 views
0

當我使用Grex連接到Rexster圖形服務器時,是否應該保持數據庫連接打開?我應該保持數據庫連接打開嗎?

var grex = require('grex'); 
var client = grex.createClient(); 

client.connect({ graph: 'graph'}, function(err, client) { 
    if (err) { console.error(err); } 

    ... 
}); 

我想應該是因爲是的NodeJS單線程的,所以沒有嘗試使用在同一時間的一個連接請求不同的機會。

+0

對於普通代碼,JavaScript是單線程的。對於異步代碼(回調或事件),JS是多線程的。 – 2014-09-06 17:40:35

+0

我認爲它是一個在不同代碼塊之間切換的單線程。所以如果你有一些等待回調的代碼,那麼Javascript將在其他地方停止,然後在完成等待某件事情並完成其它正在運行的任何其他事件時返回回調。但它從來不會同時運行多個代碼。 – 2014-09-06 17:43:45

回答

1

是的,你應該。沒有理由在每個請求上都有連接的開銷。不會有任何問題發生,因爲你的代碼無論如何都將在單線程中運行。

此外,你甚至可以有一個連接池等待服務於你的請求,如果你有一個沉重的使用應用程序。一些適配器會自動爲您執行此操作,例如,MongoClient具有5個連接的默認池。

+1

不錯的用戶名。 – 2014-09-06 17:52:07

+0

@IanWarburton謝謝:) – rollingBalls 2014-09-06 17:52:44

+0

關於秒的想法,是不是隻有單線程的http請求位?像數據庫訪問這樣的異步操作會被切換到線程,所以您可以同時運行多個查詢。 – 2014-11-29 18:01:42

相關問題