2017-03-15 9 views
0

私はpostgresqlデータベースからデータを格納し取得するNode JSを使用してアプリケーションを構築する予定です。私の懸案事項は、アプリケーションの規模に応じて、データベース上でクエリの競合が発生することです。もし私がおそらく数十またはそれ以上のNode JSインスタンスが異なるテーブルとフィールドを一度に更新すると、最終的にどこかで衝突するでしょう。これを回避するにはどうすればよいですか、それを軽減する最善の方法は何ですか?ノードjsとpostgresqlのクエリロック?

答えて

0

...いったん異なるテーブルとフィールドを更新すると、どこかで最終的に何かが衝突します。これを防ぐにはどうすればいいですか?

PostgreSQLはdatabase transactionslocksをサポートしています。

+0

ここでもデッドロックについて警告します。初期化されていない場合、デッドロックは、プロセスがテーブルAにロックを取得し、そこで大規模な処理を行うときに発生します。一方、別のプロセスはテーブルBをロックしています。最初のプロセスはテーブルBにアクセスする必要があるため、待機します。次に、第2のプロセスはテーブルAを必要とする。いずれのプロセスも他のプロセスが終了するまで進めない。 Postgresはこれを検出し、両方のプロセスを終了します。両方のトランザクションがトランザクション内にある場合、両方のトランザクションをロールバックします。 – Scoots

+0

@Scootsスポイラーはありません! ;) –

+0

素晴らしい答え!ありがとう! – neatoh80