Thanks to visit codestin.com
Credit goes to postgrespro.ru

E.1. Postgres Pro Standard 16.10.1 #

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

E.1.1. Обзор #

Этот выпуск основан на PostgreSQL 16.10 и Postgres Pro Standard 16.9.1. Все усовершенствования, унаследованные от PostgreSQL 16.10, перечислены в Замечаниях к выпуску PostgreSQL 16.10. Другие важные изменения и улучшения перечислены ниже:

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

  • Обновлены CREATE DATABASE, createdb и initdb. Теперь если значение lc_collate используется как значение по умолчанию для icu_locale или --icu-locale, выводится информационное сообщение.

  • Оптимизировано поведение при работе с функцией 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 удалён из списка источников дампа по умолчанию, чтобы избежать сбоев, которые могут возникнуть при записи диагностической информации.

  • Устранена проблема при обработке очереди 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.

  • Добавлено расширение wal2json для логического декодирования, которое преобразует изменения базы данных из журнала предзаписи (WAL) в формат JSON.

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

    • В представление aqo_data добавлено поле tmpoids, а в функцию aqo_data_update — параметр tmpoids для поддержки запросов, которые используют временные таблицы вместе с постоянными таблицами.

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

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

    • Исправлена проблема, из-за которой на резервном сервере мог возникать сбой с сигналом SIGABRT, если версия aqo на таком сервере отличалась от версии модуля на ведущем.

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

  • Расширение pg_pathman обновлено. Устранена проблема с доступом к секциям, которая могла приводить к тому, что команды, повторно использующие один и тот же план запроса, например в PL/pgSQL, завершались с ошибками «relation with OID NNNN does not exist» (отношение с OID NNNN не существует).

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

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

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

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

    • Для команды 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_pwr обновлён до версии 4.10, в которой полностью изменён дизайн отчётов и добавлена поддержка PostgreSQL 18.

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

    • Реализована возможность отслеживать команды утилиты по query_id, как в pg_stat_statements. Ранее команды утилиты отслеживались путём строгого сравнения по текстовым строкам запросов и поэтому не могли быть нормализованы корректно.

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

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

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

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

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

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

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

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

Важно

Если вы использовали предыдущую версию aqo и её потребовалось обновить, версия aqo на резервном сервере может отличаться от версии модуля на ведущем.

Чтобы избежать связанных с этим проблем, отключите aqo, задав для параметров aqo.enable и aqo.wal_rw значение off сначала на ведущем сервере, а потом на резервных серверах. После успешного обновления включите aqo, задав для параметров aqo.wal_rw и aqo.enable значение on сначала на резервных серверах, а потом на ведущем сервере.

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

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

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