Планы выполнения запросов хранятся где-нибудь в postgresql?

Вопрос: Я пытаюсь выяснить, хранятся ли планы выполнения запросов PostgreSQL где-нибудь (возможно, как бесплатный для pg_stat_statements и pg_prepared_statements) таким образом, чтобы они были доступны дольше, чем продолжительность сеанса. Я понимаю, что PREPARE pg_prepared_statements инструкцию sql в pg_prepared_statements, хотя сам план, похоже, не доступен ни в каком представлении, насколько я могу судить. Я не уверен, есть

Вопрос:

Я пытаюсь выяснить, хранятся ли планы выполнения запросов PostgreSQL где-нибудь (возможно, как бесплатный для pg_stat_statements и pg_prepared_statements) таким образом, чтобы они были доступны дольше, чем продолжительность сеанса. Я понимаю, что PREPARE pg_prepared_statements инструкцию sql в pg_prepared_statements, хотя сам план, похоже, не доступен ни в каком представлении, насколько я могу судить.

Я не уверен, есть ли документ, объясняющий жизненный цикл плана запросов для PostgreSQL, но из того, что он звучит в документации EXPLAIN, PostgreSQL вообще не кэширует планы запросов. Это точно?

Спасибо!

Лучший ответ:

PostgreSQL не имеет общего хранилища для планов выполнения, поэтому их нельзя использовать повторно в сеансах базы данных.

Существует два способа кэширования плана выполнения в сеансе:

  1. Используйте подготовленные операторы с инструкциями SQL PREPARE и EXECUTE. План будет кэшироваться в течение срока действия подготовленного заявления, как правило, до окончания сеанса.

  2. Используйте функции PL/pgSQL. Планы для всех статических операторов SQL (то есть операторов, которые не запускаются с EXECUTE) в такой функции будут кэшироваться для времени жизни сеанса.

Кроме того, планы выполнения не кэшируются в PostgreSQL.

Оцените статью
Добавить комментарий