3

postgres シーケンスを cache で使用したいCREATE SEQUENCE serial CACHE 100SELECT nextval('serial');目標は、最大500 の接続/アプリケーション スレッドを同時に使用して、1 秒あたり 3000 回の使用のパフォーマンスを向上させることです。

問題は、集中的な自動スケーリングを行っており、接続が切断されて再接続されることがあり、接続が切断されるたびにシーケンスに未使用の ID の「穴」が残ることです。

良いニュースは、トランザクション プール モードでPgBouncer heroku ビルドパックを使用していることです。

私の質問は、次のアプリケーション接続がプールからこのセッションを取得し、シーケンスのキャッシュを引き続き使用するように、セッションを再利用するかどうかです。

4

1 に答える 1

2

これは の設定に依存しますserver_reset_query。これを に設定するとDISCARD ALL、接続されたサーバーがクライアントに渡される前に、シーケンス キャッシュが破棄されます。ただし、トランザクション プーリングの場合server_reset_queryは空が推奨されるため、その場合はシーケンス キャッシュを再利用できます。DISCARD必要に応じて、別のコマンドを使用することもできます。

于 2016-11-08T23:38:03.147 に答える