2011-07-07 10 views
9

Mysqlデータベースに接続するための非常に優れたモジュール(node-mysql)が見つかりました。node-mysqlモジュールを使用して接続を開くのはいつですか?

モジュールは非常に優れています。私は、「WHEN」について、Mysqlへの接続を開くためにのみ質問します。

私はいつもphp-mysqlをnodeで始める前に使用していましたが、リクエストごとに接続を開きました。

ノードと同じですか?リクエストごとに接続を開いてから閉じる必要がありますか?または永続的な接続を使用できますか?

は、オープンクエリ近いパターンが一般的によく実行するために、接続プールに依存しているあなたに

答えて

6

ありがとうございます。 Node-mysqlには接続プーリングが組み込まれていないので、このパターンを使用すると、クエリを実行するたびに新しい接続を確立するためのコストがかかります(場合によっては問題ありません)。

ノードはシングルスレッドなので、単一の永続的な接続(特に接続が切断された場合にnode-mysqlが再接続を試みるため)が可能ですが、トランザクションを使用する場合は、ノードクライアントのすべてのユーザーが同じ接続と同じトランザクション状態を共有しているためです)。また、一度に1つのsqlコマンドしか実行できないため、1つの接続でスループットが制限される可能性があります。

したがって、トランザクションの安全性とパフォーマンスのために、最良のケースは実際に何らかのプーリングを使用することです。アプリで簡単にプールを構築したり、その機能を提供するために他にどのようなパッケージがあるかを調べることができます。しかし、オープンクエリークローズ、または永続的な接続のどちらのアプローチも、あなたのケースでも機能するかもしれません。

3

felixge /ノード-mysqlのは現在の接続プーリングあり

https://github.com/felixge/node-mysql#pooling-connectionsここ

は、上記のリンクからサンプルコードです(この記事の執筆時点では。):

var mysql = require('mysql'); 
var pool = mysql.createPool(...); 

pool.getConnection(function(err, connection) { 
    // Use the connection 
    connection.query('SELECT something FROM sometable', function(err, rows) { 
    // And done with the connection. 
    connection.end(); 

    // Don't use the connection here, it has been returned to the pool. 
    }); 
}); 

だから、答えにあなたの質問(@Geoff Chappellの答えと同じです):プールを利用して接続を管理するのが最善のケースです。

関連する問題