Oracle で数年間働いた後、PostgreSQL に引っ越しました。PostgreSQL データベースを使用するアプリケーション (Java、JDBC) のプリペアド ステートメントに関するパフォーマンスの問題を調査しています。
Oracle は、準備済みステートメントを SGA にキャッシュします。準備済みステートメントのプールは、データベース接続間で共有されます。
PostgreSQL のドキュメントはこれを示していないようです。ドキュメントのスニペットは次のとおりです(https://www.postgresql.org/docs/current/static/sql-prepare.html)-
プリペアド ステートメントは、現在のデータベース セッションの間だけ存続します。セッションが終了すると、準備されたステートメントは忘れられるため、再度使用する前に再作成する必要があります。これは、1 つのプリペアド ステートメントを同時に複数のデータベース クライアントで使用できないことも意味します。ただし、各クライアントは、使用する独自の準備済みステートメントを作成できます。
データベースが一般的に実行される準備済みステートメントのある種の共通プールを実装することは非常に基本的なように思われるため、これを正しく理解していることを確認したいだけです。
PostgreSQL がこれらをキャッシュしない場合、多くのデータベース トランザクションを予期するすべてのアプリケーションが、接続間で再利用できる何らかの準備済みステートメント プールを開発する必要があることを意味します。
以前に PostgreSQL を使用したことがある場合は、これについての洞察をいただければ幸いです。