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» (отношение с OIDNNNN
не существует).Обновлено расширение 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.