2012-01-03 5 views
0

PHPのpg_prepare()関数を使用して準備できる準備文の数に制限はありますか?PHP-Postgresに用意されている最大の文は許可されていますか?

+0

私はDBサーバーのメモリとPHPを実行しているボックスのメモリの両方が、プリペアドステートメントがPHPでオブジェクトを作成し、データベース上の準備文を作成するので、メモリに制限があると思います。 – GordonM

+0

正直言って、メモリ枯渇問題のために十分な準備文を生成している場合、アプリケーションのアーキテクチャはおそらく再考する必要があります。 – GordonM

答えて

2

PREPARE edステートメントの数値の最大数はありませんが、バックエンドが割り当てることができるRAMの量には論理的な制限があります。 PREPAREが成功する限り、PostgreSQLバックエンドは、接続が切断されるまで準備文を保存します。その時点でPREPARE ed文がクリーンアップされます(またはメモリを解放するときにPREPARE ed文があります)。

すべてPREPAREDステートメントは、バックエンドごとのハッシュテーブルに格納されます。 PREPARE edステートメントのメモリー割り当ては、ステートメント自体によって処理され、プリペアドステートメントキャッシュに再割り当てされます。詳細については、src/backend/commands/prepare.csrc/backend/utils/cache/plancache.c:SaveCachedPlan()を参照してください。


この情報は、PostgreSQL 9.1+のための2012-01-03現在のもので、PostgreSQLはPREPARE ED文の耐久性のあるキャッシュをサポートしている場合、将来的に異なる場合があります。

+0

優れた耐久性のあるキャッシュは素晴らしいでしょう! – Liam

関連する問題