Не существует числового максимального количества PREPARE
ed операторов, однако существует логическое ограничение на объем ОЗУ, который может выделить серверная часть.До тех пор, пока PREPARE
завершается успешно, серверная часть PostgreSQL будет сохранять подготовленный оператор до тех пор, пока соединение не будет разорвано, и в этот момент он очистит PREPARE
операторы ed (или вы могли бы DEALLOCATE
оператор PREPARE
ed, когда выхочу освободить память).
Все операторы PREPARED
хранятся в хеш-таблице для каждого бэкэнда.Выделение памяти для оператора PREPARE
ed выполняется самим оператором и переназначается в подготовленный кэш операторов.См. src/backend/commands/prepare.c
и src/backend/utils/cache/plancache.c
: SaveCachedPlan (), если вам интересно узнать подробности.
Эта информация актуальна на 2012-01-03 для PostgreSQL 9.1+ и может отличаться вбудущее, когда PostgreSQL поддерживает надежный кеш PREPARE
операторов.