これに必要な情報を説明しましょう。
複数の同時ユーザーが同時に同じレコードをヒットしています。これは、db側でキューイングとロックが行われることを意味します。このバッファの大きさはどれくらいですか?200人以上の同時ユーザーのキューとロックを保持できますか?
セットアップでこのバッファーのサイズを決定するにはどうすればよいですか?デフォルト設定はありますか?
これに必要な情報を説明しましょう。
複数の同時ユーザーが同時に同じレコードをヒットしています。これは、db側でキューイングとロックが行われることを意味します。このバッファの大きさはどれくらいですか?200人以上の同時ユーザーのキューとロックを保持できますか?
セットアップでこのバッファーのサイズを決定するにはどうすればよいですか?デフォルト設定はありますか?
データベースにはクエリ キュー (「バッファ」) はありません。
データベースへの同時接続ごとに、実行中のクエリを 1 つ持つことができます。その後ろに他のクエリをキューに入れることはできません*。
あなたのアプリケーションは、Rails である内部接続プールを使用する可能性が高いため、接続プールにスロットがあるため、多くのクエリを待機させることができます。
アプリと PostgreSQL の間でプロキシする PgBouncer のような外部接続プールがある場合、pgbouncer 接続は非常に軽量であるため、pgbouncer に接続するときにアプリでより大きなプール サイズを使用できるため、より多くのクエリをキューに入れることができます。PgBouncer は、少数の PostgreSQL への実際の接続でこれらのリクエストを処理します。このように使用すると、PgBouncer は効果的にクエリ キューになります (必ずしも FIFO キューである必要はありません)。ただし、これらのクエリは発行時に実際には Pg にヒットしないため、PgBouncer で待機している間はロックを取得しません。これは、一部の同時実行設計にとって重要になる場合があります。
* OK、一度に複数のセミコロンで区切られたクエリを送信できますが、キューのように連続して送信することはできません。