E.1. Postgres Pro Enterprise 14.19.1

Дата выпуска: 2025-09-24

E.1.1. Обзор

Этот выпуск основан на PostgreSQL 14.19 и Postgres Pro Enterprise 14.18.1. Все изменения, унаследованные от PostgreSQL 14.19, описаны в Замечаниях к выпуску PostgreSQL 14.19. По сравнению с Postgres Pro Enterprise 14.18.1 эта версия также содержит следующие изменения:

  • Улучшена производительность за счёт подавления сообщений аннулирования кеша каталога в ходе операций DDL на временных таблицах и в процессе анализа этих таблиц. Полезно для 1C.

  • Улучшена производительность за счёт того, что файл pg_internal.init не аннулируется при анализе таблиц каталога, особенно когда статистика для этих таблиц часто меняется. Может быть полезно для 1C.

  • Улучшена производительность за счёт уменьшения количества запросов на блокировку таблиц pg_attribute и pg_statistic при выполнении запросов с большим количеством отношений, которые отсутствуют в кеше системы. Может быть полезно в некоторых вариантах использования для 1C.

  • Улучшена производительность нетранзакционных операций усечения временных таблиц и операций быстрого усечения. Полезно для 1C.

  • Оптимизировано поведение при работе с функцией COALESCE. Теперь функция заменяется одним аргументом, если остальные аргументы оказываются null. Это позволяет улучшить оценку избирательности для условий запросов и создавать более эффективные планы выполнения запросов.

  • Добавлены следующие изменения в реализацию crash_info:

    • Добавлены параметры конфигурации crash_info_timer, crash_info_timer_interval и crash_info_query_threshold, которые позволяют профилировать длительные запросы в выходных файлах crash_info.

    • Расширена диагностическая информация, которую параметр конфигурации crash_info_dump позволяет записать в случае сбоя сервера. По умолчанию теперь поддерживается запись общей информации об ошибке (сигнале), а для Linux x64 также дамп информации о состоянии процессора и байтов рядом с RIP (return instruction pointer, указатель возврата инструкции). Всё это обеспечивает лучшую диагностику, в частности, для сигналов SIGILL (недопустимая инструкция). Также был изменён способ дампа стека в случае сбоев для Linux x64. Кроме того, memory_context удалён из списка источников дампа по умолчанию, чтобы избежать сбоев, которые могут возникнуть при записи диагностической информации.

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

    • Улучшены операции со сжатыми табличными пространствами на архитектурах s390/s390x.

    • Улучшена оценка коэффициента сжатия таблиц с помощью функции cfs_estimate(relation). Обратите внимание, что функцию cfs_estimate(relation) следует использовать только после контрольной точки, чтобы избежать некорректных оценок.

    • Отключено усечение для сжатых отношений в ходе операций очистки.

    • Прекращена поддержка шифрования для CFS, включая параметр конфигурации cfs_encryption.

  • Устранено чрезмерное потребление памяти выключенным встроенным пулом соединений.

  • Устранена проблема с автономными транзакциями, из-за которой после завершения транзакций ресурсы не освобождались, что приводило к накоплению ссылок на кешированные планы.

  • Устранено несоответствие образов страниц при добавлении кучи на пустую страницу. Ранее это могло привести к некорректному содержимому страниц на резервных серверах.

  • Устранена проблема с преобразованием страниц из 32-битного в 64-битный формат после обновления Postgres Pro Enterprise с помощью pg_upgrade. Ранее, когда страница преобразовывалась только в памяти без записи на диск и одновременно автоочисткой удалялись соответствующие сегменты pg_xact, статус транзакции в кортежах терялся, что приводило к ошибкам доступа.

  • Устранено возможное условие гонки в процессе walreceiver.

  • Устранена проблема при обработке очереди LISTEN/NOTIFY, из-за которой нельзя было получить статус транзакции. Ранее процедура VACUUM FREEZE могла увеличить значение datfrozenxid слишком сильно.

  • Устранена проблема, из-за которой планировщик мог выбирать неоптимальные планы выполнения запросов с оператором LIKE для типа данных mchar.

  • Добавлена поддержка ОС Debian 13, Red Hat Enterprise Linux 10, Rocky Linux 10, Oracle Linux 10 и AlmaLinux 10.

  • Прекращена поддержка ОС Ubuntu 20.04.

  • Обновлён модуль aqo. Включены следующие исправления:

    • Устранено условие гонки при вызове функции aqo_cleanup из разных сеансов.

    • Устранена проблема, из-за которой данные обучения aqo не сохранялись для запросов с материализацией.

  • Модуль auto_explain обновлён. В выводе время планирования запроса вынесено в отдельную строку под деревом планировщика, как это сделано в выводе EXPLAIN. Ранее pgbadger не мог распознать информацию о запросе и поэтому не включал её в отчёт.

  • Устранена проблема, из-за которой модуль fasttrun не мог полностью очистить временные таблицы, если количество сегментов в кеше было меньше фактического количества сегментов на диске. В результате пространство на диске оставалось занятым, хотя таблица выглядела пустой.

  • Обновлено расширение multimaster. Включены следующие исправления и усовершенствования:

    • Улучшена способность узла возвращаться к обычной работе после навёрстывания за счёт ускорения процесса построения фильтра транзакции при запуске walreceiver.

    • Исправлена ошибка, из-за которой при добавлении нового узла зависал процесс восстановления и возникал риск рассинхронизации данных.

    • Исправлены неожиданные ошибки при выполнении команд DDL, которые были вызваны некорректной обработкой сообщений аннулирования кеша каталога.

  • Реализована возможность настраивать LDAP-аутентификацию для pgbouncer с помощью PAM (Pluggable Authentication Modules, подключаемые модули аутентификации). За дополнительной информацией обратитесь к разделу Настройка LDAP-аутентификации для pgbouncer.

  • Обновлён модуль pg_freespacemap. Теперь он включает функцию pg_freespace_relation_logical_blocks для вычисления пространства на диске, которое используется слоями отношений. Это функция работает со сжатыми и несжатыми таблицами.

  • Устранена проблема с выделением памяти в pg_prewarm, из-за которой ранее могли возникать ошибки типа «invalid memory alloc request size» (недопустимый запрошенный размер памяти), если для параметра конфигурации shared_buffers было задано огромное значение.

  • Обновлено расширение pg_proaudit. Включены следующие усовершенствования:

    • Добавлена поддержка формата CEF для файлов журналов событий.

    • Скорректирован вывод pg_proaudit. Теперь поля xid и vxid не отображаются, если имеют нулевое значение.

  • Приложение pg_probackup обновлено до версии 2.8.10 Enterprise, в которой добавлена новая функциональность, улучшена производительность и исправлены некоторые ошибки:

    • Для команды add-instance добавлен параметр --wal-tree, который позволяет хранить заархивированные файлы WAL в древовидной структуре. Это повышает производительность операций при работе с журналами большого объёма.

    • В вывод команды show добавлено поле postgres-edition в формате JSON для отображения информации о редакции СУБД.

    • Улучшена работа с параметром --dry-run при восстановлении табличных пространств. Оценка операции и вывод плана стали более точными.

    • Устранена проблема, связанная с вычислением окна хранения. Значение времени теперь берётся с компьютера, на котором работает pg_probackup. Окно хранения вычисляется правильно, даже если серверы расположены в разных часовых поясах.

    • Устранена проблема, связанная с работой команды archive-get. Теперь каталог pbk_prefetch создаётся с правильными правами доступа, которые наследуются из PGDATA.

    • Устранён ложный сбой команды checkdb, возникавший в удалённом режиме при параллельных операциях TRUNCATE или удалении таблиц на резервных узлах.

  • Устранены следующие проблемы с модулем pgpro_bindump:

    • Устранён риск сбоя pg_probackup3, если в ходе проверки резервных копий с использованием модуля pgpro_bindump в режиме PRO встречались временные таблицы.

    • Устранена утечка памяти в pg_probackup3 при использовании модуля pgpro_bindump для операций PTRACK.

    • Устранена проблема, которая может привести к зацикливанию в pg_probackup3 при использовании модуля pgpro_bindump.

    • Устранена проблема с резервным копированием в нескольких линиях времени в режиме PTRACK в pg_probackup3 при использовании модуля pgpro_bindump в режиме PRO.

  • Обновлена утилита pgpro_datactl. Добавлена новая функциональность:

    • Добавлена команда repack, которая позволяет изменять алгоритм сжатия и/или уровень сжатия файлов CFS.

    • Добавлена команда ground, которая заменяет повреждённые блоки нулями, чтобы избежать возможных сбоев.

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

  • Модуль pgpro_pwr обновлён до версии 4.10, в которой полностью изменён дизайн отчётов и добавлена поддержка PostgreSQL 18.

  • Расширение pgpro_scheduler обновлено до версии 2.12, в которую включены следующие усовершенствования и исправления:

    • Добавлены функции schedule.clean_at_jobs_done и schedule.clean_at_jobs_done, с помощью которых можно очистить таблицу schedule.at_jobs_done, удалив старые записи.

    • Добавлена возможность менять время следующего запуска задания cron с next_time_statement путём обновления его свойств cron, date, dates или rule с помощью функции set_job_attributes().

  • Приложение pgpro_stats обновлено. Исправлена ошибка сегментации, которая могла возникать при определении дополнительных метрик. Ошибка была вызвана проблемой при выделении памяти.

  • Устранена проблема, из-за которой при использовании пресета 1c.tune утилиты pgpro_tune задавались неверные значения параметров конфигурации.

  • Модуль pg_query_state обновлён до версии 1.2, в которую добавлены функции pg_progress_bar и pg_progress_bar_visual, позволяющие отслеживать текущий прогресс выполнения запросов.

  • В утилиту pg_restore добавлен параметр --enable-large-mem-buffers, позволяющий не суперпользователю восстановить базу данных, которая не содержит больших значений bytea и записей с несколькими значениями типа text.

  • Устранена проблема в модуле postgres_fdw, из-за которой запросы UPDATE и DELETE с предложением RETURNING могли выдавать ошибки «out of memory for query result» (недостаточно памяти для результата запроса). Теперь результаты RETURNING обрабатываются построчно.

  • Обновлён модуль rum. Включены следующие исправления:

    • Исправлена ошибка сегментации, вызванная некорректным обращением к памяти, когда указатель на следующую страницу индекса использовался после того, как предыдущая страница была изменена другим потоком.

    • Устранён бесконечный цикл сканирования индекса при использовании нескольких предложений ORDER BY.

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

Если вы производите обновление выпуска Postgres Pro Enterprise, базирующегося на той же основной версии PostgreSQL, достаточно просто установить новый выпуск в текущий каталог инсталляции.

Версия ABI может измениться в корректирующем выпуске Postgres Pro. В таком случае при попытке запустить расширение возникает ошибка ABI mismatch (Несоответствие ABI), поэтому обязательно установите новую версию расширения, поставляемую с новым выпуском Postgres Pro, или перекомпилируйте стороннее расширение, чтобы использовать его с текущей версией Postgres Pro.

При обновлении отказоустойчивого кластера с Postgres Pro Enterprise версии 14.12.x или ниже сначала отключите автоматическое аварийное переключение узлов, если оно было включено, и обновите все резервные серверы, затем обновите ведущий сервер, повысьте резервный сервер до ведущего и перезапустите бывший ведущий сервер (возможно, с использованием pg_rewind).

Если вы создаёте резервные копии с помощью pg_probackup и ранее обновили его до версии 2.8.0 Enterprise или 2.8.1 Enterprise, обязательно обновите его до версии 2.8.2 Enterprise или выше и сделайте полную резервную копию базы данных после обновления, поскольку резервные копии, созданные с использованием этих версий, могут быть повреждены. Чтобы проверить, повреждены ли резервные копии, созданные с помощью версий 2.8.0 или 2.8.1, можно использовать версию 2.8.2.

Если вы хотите сохранить существующее представление карт видимости в pageinspect при миграции на текущую основную версию Postgres Pro Enterprise с использованием pg_upgrade, выполните команду VACUUM, прежде чем начинать обновление.

Начиная с Postgres Pro Enterprise 14.10.1, права ролей с атрибутом CREATEROLE ограничены, и для изменения свойств других ролей требуется наличие права ADMIN OPTION.

Настоятельно не рекомендуется обновлять кластер с 32-битными идентификаторами транзакций на версии Postgres Pro Enterprise ниже 14.9.2 при наличии мультитранзакций в базе данных, поскольку это может вызвать повреждение данных.

При обновлении до версии Postgres Pro Enterprise 14.8.1 и выше обязательно обновите pg_probackup Enterprise до версии 2.6.4 или выше, поскольку более ранние версии pg_probackup несовместимы с этими версиями Postgres Pro Enterprise.

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