いいえ。 AFAIKプリペアドステートメントはバックエンドに対してローカルです。他のバックエンドは、それらが存在することを知らないだけです。サーバーを変更してプロセス間通信を追加し、1つのバックエンドが他のバックエンドにプリペアドステートメントについて質問できるようにする必要があります。
バックエンドは当初、同じpg_prepared_statements
を共有しているように見えました テーブルストレージ、次のように:
SELECT relfilenode FROM pg_class WHERE relname = 'pg_prepared_statements';
異なるバックエンドから同じrelfilenodeを返します。プリペアドステートメントにはディスク上に存在しないと思ったので、私は驚きました。それらがディスク上にある場合は、pageinspectcontribモジュールの関数を使用できると思います。 生のタプルまたはテーブルページを読み取ります。視認性が問題になります。デッド/終了したバックエンドに何が関連していて、何が有効であったかをどのようにして知ることができますか?
それを試してみたところ、pg_prepared_statements
実際にはビューです:
regress=# SELECT * FROM heap_page_items(get_raw_page('pg_prepared_statements', 1));
ERROR: cannot get raw page from view "pg_prepared_statements"
具体的には、pg_prepared_statement()
のビューです。 関数。したがって、検査するものは何もありません。内部のバックエンドです。
これはそれらの1つのように思えます「...しかし、なぜあなたはそれをするのですか?」質問。これは、多くの場合、誰かが解決策について質問している兆候です。 彼らは彼らの本当の問題について尋ねるのではなく、彼らの本当の問題を思い描いていました。
だから:なぜあなたはそれが欲しいのですか?あなたが解決しようとしている本当の問題は何ですか?