E.1. Postgres Pro Enterprise 18.1.1 #

Дата выпуска: 2025-12-26

E.1.1. Обзор #

Этот выпуск основан на PostgreSQL 18.1 и включает все новые возможности, появившиеся в PostgreSQL 18, а также исправления ошибок, вошедшие в корректирующий выпуск PostgreSQL 18.1. Подробное описание этих новшеств вы можете найти в замечаниях к выпускам PostgreSQL 18 и PostgreSQL 18.1 соответственно.

Список дополнительных модулей и утилит, добавленных в Postgres Pro Enterprise, а также перечень ключевых видимых пользователям изменений в ядре сервера по сравнению с ванильным PostgreSQL вы можете найти в Разделе 2. Ниже перечислены значимые отличия этой версии от Postgres Pro Enterprise 17.7.1:

  • Добавлена возможность создавать таблицы, которые разделяются на секции при помощи внешнего ключа. Внешний ключ используется как ссылка на родительскую секционированную таблицу и определяется в предложении PARTITION BY REFERENCE.

  • Добавлена функция pg_relation_logical_blocks для вычисления пространства на диске, используемого слоями отношений как для сжатых, так и несжатых таблиц.

  • Добавлены новые параметры OLD_PASSWORD_TIME и OLD_PASSWORD_MAX для команд CREATE PROFILE и ALTER PROFILE. Эти параметры необходимы для аутентификации с помощью старого пароля. OLD_PASSWORD_TIME определяет, как долго можно использовать старый пароль для аутентификации наряду с новым. OLD_PASSWORD_MAX задаёт максимальное количество попыток аутентификации со старым паролем до его блокировки. Для отображения информации, связанной со старыми паролями, в каталог pg_role_password были добавлены поля oid и passloginattempts, а в каталог pg_profile — поля pfloldpasswordtime и pfloldpasswordmax.

  • Добавлен новый параметр конфигурации compute_plan_id, который позволяет включать и отключать вычисление идентификаторов плана запроса в ядре. Также в представление pg_stat_activity добавлено поле plan_id для отображения идентификаторов планов.

  • Добавлен новый параметр конфигурации extra_query_transformations, который управляет дополнительными преобразованиями дерева запросов. Этот параметр заменяет параметры enable_any_to_lateral_transformation и enable_extra_transformations, которые были удалены.

  • Добавлен параметр хранения append_optimized, который включает или отключает возможность массового добавления строк в таблицы. Эта функциональность позволяет сократить время поиска буферов в разделяемой памяти и снизить количество создаваемых записей WAL.

  • Реализовано табличное пространство pg_temp_default, которое используется по умолчанию для хранения временных объектов, например временных таблиц, их индексов или временных файлов, создаваемых, например, для хранения промежуточных результатов запросов. Это табличное пространство создаётся по умолчанию во время инициализации кластера. Кроме того, в каталог pg_tablespace добавлен столбец spcpersistence. Временные табличные пространства могут хранить только временные объекты, в то время как постоянные табличные пространства хранить временные объекты не могут. Также при помощи команды ALTER TABLESPACE теперь можно сделать постоянное табличное пространство временным.

  • Реализованы следующие усовершенствования для поиска k-NN:

    • Минимизировано количество «примитивных» сканирований во время сканирования только индекса в случаях, когда аргумент выражения ORDER находится за пределами границ условий ScalarArrayOp.

    • Добавлена возможность объединять слиянием несколько условий ScalarArrayOp, заданных с помощью логического оператора AND.

  • Добавлена возможность приводить тип данных xid к типу xid8.

  • Изменено поведение AQE (адаптивное выполнение запросов), связанное с идентификаторами планов. Теперь для работы AQE необходимо для параметра конфигурации compute_plan_id установить значение auto (по умолчанию) или on, чтобы включить вычисление идентификаторов планов в ядре. В противном случае AQE отключено.

  • Улучшено решение BiHA. Включены следующие возможности и усовершенствования:

    • Расширение biha обновлено до версии 1.7.

    • Реализована каскадная репликация для BiHA-кластеров. Каскадную репликацию можно настроить при инициализации нового BiHA-кластера или GDBiHA-кластера с помощью обновлённой утилиты bihactl, а затем изменить настройку каскадной репликации с помощью параметров max_replicas, preferred_roles, priority и соответствующих функций. Если какой-либо источник репликации выходит из строя, BiHA автоматически перенастраивает каскадную репликацию.

    • Реализована экспериментальная функциональность, позволяющая объединять узлы BiHA-кластера в сегменты (логические узлы), которые можно разместить в географически распределённых центрах обработки данных. Передача данных между сегментами осуществляется в один поток между лидером и главным последователем — физическими узлами, размещёнными в сегменте-лидере и сегменте-последователе соответственно. В случае выхода из строя лидера или главного последователя репликация данных автоматически перенастраивается. При необходимости сегмент-лидер можно назначить вручную. За подробной информацией обратитесь к разделу Геораспределённость и катастрофоустойчивость.

    • Обновлена утилита bihactl, в которой сохранена прежняя функциональность и добавлена поддержка управления каскадной репликацией и сегментами для геораспределённости и катастрофоустойчивости.

    • Добавлено представление biha.super_status_v — расширенная версия представления biha.status_v, где дополнительно отображаются данные для GDBiHA-кластера.

    • Улучшена функциональность протоколирования для обеспечения удобства использования и понятности сообщений журнала. Добавлены отдельные уровни протоколирования для компонентов Postgres Controller и Config Controller.

    • Реализована функциональность сервисного режима, которая управляется функцией biha.service_mode. Сервисный режим позволяет временно приостановить работу BiHA. Это может потребоваться при изменении параметров конфигурации, когда нужно убедиться, что изменения применились на всех узлах кластера.

    • Добавлена функция biha.monitoring, которая позволяет отслеживать текущий статус узлов BiHA-кластера. Функцию можно вызвать с любого узла.

    • Добавлен специальный защитный механизм watchdog, который помогает предотвратить зависание узлов и проблему разделения кластера (split-brain). Механизмом watchdog можно управлять с помощью параметра конфигурации biha.watchdog_timeout.

  • Унаследована ванильная реализация автоматического удаления ненужных замкнутых соединений таблиц. Удалён соответствующий параметр конфигурации enable_self_join_removal; вместо него используйте enable_self_join_elimination.

  • Унаследована ванильная реализация автоматических преобразований конструкций x IN (VALUES (...), (...)) в конструкции x = ANY([...]) для получения эффективных планов запросов. Расширение pgpro_planner больше не нужно для выполнения этих преобразований.

  • Удалены функции pgpro_version, pgpro_edition и pgpro_build, признанные устаревшими. Используйте вместо них параметры конфигурации pgpro_version, pgpro_edition и pgpro_build.

  • Прекращена поддержка Debian 11.

  • Модуль aqo обновлён до версии 4.0, реализующей оптимизации, которые улучшают производительность и значительно сокращают накладные расходы на планирование запросов.

  • Обновлено расширение pgpro_multiplan: изменена логика вычисления идентификаторов планов для поля planid представления pgpro_multiplan_stats. Теперь, чтобы включить вычисление идентификаторов планов в ядре, которое используется в pgpro_stats, для параметра конфигурации compute_plan_id необходимо установить значение on. В противном случае все значения поля равны 0.

  • В расширение proxima добавлен экспериментальный модуль KVik. Модуль KVik предназначен для систем с высокой нагрузкой на чтение данных. Он кеширует в оперативной памяти данные баз данных Postgres Pro и обеспечивает быструю работу с ними через протокол RESP (Redis Serialization Protocol). Основные возможности KVik:

    • высокопроизводительное чтение данных;

    • поддержка команд RESP, таких как SET, GET, DEL;

    • автоматическое аннулирование данных в кеше при их изменении в базах данных Postgres Pro операторами INSERT, UPDATE, DELETE;

    • автоматическое изменение данных в базах данных Postgres Pro при их изменении в кеше операциями SET и DEL.

  • Расширение apache_age обновлено до версии 1.6.1.

  • Модуль orafce обновлён до версии 4.16.3.

  • Утилита pg_filedump обновлена до версии 18.1.

  • Модуль pg_hint_plan обновлён до версии 1.8.0.1.

  • Утилита pg_probackup обновлена до версии 2.8.12 Enterprise.

  • Утилита pgpro_controldata обновлена до версии 18.2.0.

  • Пакет pgpro-orautl обновлён до версии 2.2.

  • Расширение pgvector обновлено до версии 0.8.1.

  • Расширение tds_fdw обновлено до версии 2.0.5.

  • Postgres Pro больше несовместим с расширением citus.

  • Удалено признанное устаревшим расширение vops.

E.1.2. Миграция на версию 18 #

Вы можете перейти на Postgres Pro Enterprise 18 с той же или предыдущей версии PostgreSQL (которая поддерживается выбранным способом обновления) или Postgres Pro Standard/Postgres Pro Standard Certified, а также с предыдущей версии Postgres Pro Enterprise/Postgres Pro Enterprise Certified. То же самое справедливо для перехода на Postgres Pro Enterprise Certified 18. Способы обновления кластера базы данных описаны в Разделе 18.6. Если у вас возникнут проблемы при переходе на новую версию, обратитесь в службу поддержки Postgres Pro Enterprise. Обратный переход не поддерживается. Обратите внимание, что переход с Postgres Pro Enterprise на Postgres Pro Enterprise Certified той же основной версии (или наоборот) — это обновление на совместимую версию Postgres Pro (за подробным описанием обратитесь к Разделу 18.6).

Для перехода с PostgreSQL или выпуска Postgres Pro Standard или Postgres Pro Enterprise, базирующегося на предыдущей основной версии PostgreSQL, сначала установите его последний корректирующий выпуск, а затем выполните выгрузку/восстановление данных, применив pg_dumpall или утилиту pg_upgrade.

Если вы решите использовать pg_upgrade, важно инициализировать новый кластер баз данных с совместимыми параметрами. В частности, обратите внимание на характеристику контрольных сумм в кластере, который вы будете обновлять. Если pg_upgrade создаст какие-либо скрипты SQL в текущем каталоге, выполните их для завершения обновления. Параметр --swap pg_upgrade нельзя использовать для обновления Postgres Pro Enterprise с PostgreSQL или Postgres Pro Standard из-за несовместимости заголовков страниц кучи и FSM и с Postgres Pro Enterprise версии ниже 14 из-за несовместимости формата страниц карты видимости.

При переходе с PostgreSQL или Postgres Pro Standard обязательно уделите внимание особенностям реализации, связанным с 64-битными идентификаторами транзакций. Если вы ранее использовали явные приведения идентификаторов транзакций к 32-битным целым, вы должны заменить их на приведения к типу bigint, так как 64-битные идентификаторы транзакций имеют такой тип.

За информацией по миграции BiHA-кластера на версию 18 обратитесь к инструкциям по миграции BiHA.

Примечание

Во избежание конфликтов не используйте пакет postgrespro-ent-18 для установки исполняемых файлов Postgres Pro, а установите вместо него отдельные пакеты компонентов продукта. В этом случае режим автозапуска сервера, если он требуется, нужно будет включить вручную. Подробнее о предоставляемых пакетах и вариантах установки вы можете узнать в Главе 17.

Другие особенности обновления, присущие и ванильной версии PostgreSQL, описаны в Разделе E.3.