私は
データベース通信にはいくつかのレベルの最適化があります。それらの中で最も重要なのは、HTTPリクエストごとのクエリの数を最小限に抑えることです。これは、IOが高価であり、接続プールも高価であるためです。
- HTTPリクエストごとに複数のクエリを実行する必要がある場合は、常にメソッドタスク 。
- タスクにトランザクションが必要な場合は、メソッド tx 。
- 複数の挿入または更新を行う必要がある場合は、常に複数行の操作を使用してください。 pg-promiseを使用した複数行の挿入
を参照してください および
Node.jsでのPostgreSQLの複数行の更新 。
node-postgresはバージョン6.xからpg-poolの使用を開始しましたが、pg-promiseは内部接続プールの実装を使用するバージョン5.xのままです。 これが理由です 。
この分野での私の長い実践は、次のことを示唆しています。サービスを20の接続のプールに収めることができない場合、接続を増やしても節約されないため、代わりに実装を修正する必要があります。また、20を超えると、CPUに追加の負担がかかり始め、それはさらに速度が低下することになります。
データのサイズは、プールのサイズとは何の関係もありません。通常、1回のダウンロードまたはアップロードには、規模に関係なく1つの接続のみを使用します。実装が間違っていて、複数の接続を使用することにならない限り、アプリをスケーラブルにする場合は、それを修正する必要があります。
次に利用可能な接続を待ちます。
参照: