Каков срок службы подготовленного оператора PostgreSQL на стороне сервера?
СогласноДокументация PostgreSQLподготовленный оператор привязан к сеансу / соединению базы данных:
PREPARE создает подготовленное утверждение. Подготовленный оператор - это объект на стороне сервера, который можно использовать для оптимизации производительности. Когда выполняется оператор PREPARE, указанный оператор анализируется, анализируется и переписывается. Когда впоследствии выполняется команда EXECUTE, подготовленный оператор планируется и выполняется.
Подготовленные операторы действуют только в течение текущего сеанса работы с базой данных. Когда сеанс заканчивается, подготовленный оператор забывается, поэтому перед повторным использованием его необходимо создать заново.
Но потом,Маркус Винанд (автор объяснения производительности SQL) говорит, что:
PostgreSQL не имеет общего кэша плана запросов, но имеет дополнительный кэш плана запросов для подготовленных операторов. Это означает, что у разработчика есть выбор: использовать подготовленный оператор с кэшированным планом запросов или без него. Но обратите внимание, что кэш удаляется при закрытии подготовленного оператора.
Какой из них является правдой?
Живет ли подготовленный оператор до тех пор, пока соединение с базой данных открыто, поэтому при использовании пула соединений он может существовать до тех пор, пока пул явно не закрывает физическое соединение или если подготовленный оператор на стороне сервера удаляется после JDBCПодготовленное заявление закрыто.