E.3. Postgres Pro Shardman 17.6.1 #
Дата выпуска: 2025-11-17
Этот выпуск основан на Postgres Pro Shardman 17.5.1 и PostgreSQL 17.6. Он также наследует часть возможностей и исправлений Postgres Pro Enterprise 17.6.1. Все новые возможности, появившиеся в PostgreSQL 17.6, можно найти в разделе Замечания к выпуску PostgreSQL 17. Ниже перечислены значимые отличия этой версии от Postgres Pro Shardman 17.5.1.
E.3.1. Ядро и расширения #
Добавлена оптимизация выбора быстрого пути для работы с данными, расположенными в одной секции. Добавлена поддержка команд
SELECT,UPDATE,DELETEи подготовленных операторов в Silk. Оптимизацию нельзя использовать, если значение параметра конфигурацииextra_float_digitsменьше 0. Значение по умолчанию —off.Добавлена функция
public.list_always_shippable()для postgres_fdw, которая выводит список проталкиваемых процедур.Добавлена поддержка чтения метаданных Postgres Pro Shardman в pgpro_controldata.
Добавлено отображение статистики по размеру компонентов отправленных с узла сообщений
MT_SPI(в байтах) через представлениеshardman.pg_stat_silk_msg_components.Добавлено ограничение, при котором локальные таблицы теперь не могут наследовать глобальные таблицы.
Добавлена возможность применять политику защиты на уровне строк (RLS) для глобальных и сегментированных таблиц.
Добавлена поддержка расширенных парольных политик и глобальных профилей с помощью параметров конфигурации shardman.extended_password_policies и shardman.extended_password_policies_skip_users. Они задают системных пользователей, для которых не происходит обмена информацией по событиям авторизации между узлами кластера Postgres Pro Shardman, а также которых нельзя блокировать. Однако они могут авторизовываться на резервном сервере Postgres Pro Shardman.
Добавлена поддержка разрешения нескольких адресов при конфигурировании стороннего сервера для работы Silk.
Добавлена поддержка двух режимов
READ COMMITTEDс поддержкой снимков CSN верхнеуровневых операторов или без неё. Эти режимы позволяют избежать грязных чтений, а управление режимами реализовано при помощи параметра конфигурации enable_csn_snapshot_for_read_committed.Ограничена возможность редактирования параметра конфигурации
shardman.sync_schema, теперь это могут делать только суперпользователи.Обеспечена поддержка SSL для Silk.
Обновлено семейство функций
shardman.try_advisory_xact_lock*(), теперь они возвращают значениеfalseв случаях, когда раньше выдавали ошибку.Обновлён процесс создания сегмента, теперь база данных
postgresсоздаётся на узле-рефери автоматически.Обновлена поддерживаемая версия pgpro_pwr до 4.0.
Обновлена поддерживаемая версия amcheck до 1.4.
Обновлена поддерживаемая версия aqo до 3.1.
Поддерживаемая версия dblink обновлена до версии 1.2.
Обновлена поддерживаемая версия pg_proaudit до 2.0.
Обновлена поддерживаемая версия pgpro_stats до 1.9-sdm4.
Обновлена поддерживаемая версия pg_filedump до 18.0.
Обновлена поддерживаемая версия pgpro_controldata до 18.1.
Обновлена поддерживаемая версия postgres_fdw до 1.4.
Обновлена поддерживаемая версия ptrack до 2.5.
Улучшения и исправления, унаследованные от Postgres Pro Enterprise 17.6.1:
Добавлен параметр хранения share_lock_fk, который включает или отключает возможность получения одиночной блокировки
SHAREдля таблицы во время проверки ограничений внешних ключей.Добавлена возможность для оптимизатора применять мемоизацию узлов для параметризованных соединений
ANTI JOIN, если для параметра enable_extra_transformations установлено значениеon.Улучшена производительность за счёт уменьшения количества запросов на блокировку таблиц pg_attribute и pg_statistic при выполнении запросов с большим количеством отношений, которые отсутствуют в кеше системы. Может быть полезно в некоторых вариантах использования для 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удалён из списка источников дампа по умолчанию, чтобы избежать сбоев, которые могут возникнуть при записи диагностической информации.
Реализованы следующие исправления и усовершенствования для CFS:
Улучшены операции со сжатыми табличными пространствами на архитектурах s390/s390x.
Улучшена оценка коэффициента сжатия таблиц с помощью функции
cfs_estimate(relation). Обратите внимание, что функциюcfs_estimate(relation)следует использовать только после контрольной точки, чтобы избежать некорректных оценок.Отключено усечение для сжатых отношений в ходе операций очистки.
Прекращена поддержка шифрования для CFS, включая параметр конфигурации
cfs_encryption.
Устранено несоответствие образов страниц при добавлении кучи на пустую страницу. Ранее это могло привести к некорректному содержимому страниц на резервных серверах.
Устранено возможное условие гонки в процессе
walreceiver.Устранена проблема при обработке очереди
LISTEN/NOTIFY, из-за которой нельзя было получить статус транзакции. Ранее процедураVACUUM FREEZEмогла увеличить значениеdatfrozenxidслишком сильно.Устранены проблемы репликации, вызванные некорректным сдвигом горизонта WAL. Ранее если заморозка транзакции вызывалась не командой
VACUUM, а в ходе вычисления базы страницы для 64-битных идентификаторов транзакций, в WAL записывалось некорректное значение горизонта. Это могло привести к аннулированию слотов логической репликации или задержке репликации на резервных серверах.Исправлена ошибка сегментации, которая могла возникать при обработке ошибки в ходе создания глобальных индексов.
Обновлён модуль aqo. Включены следующие исправления и усовершенствования:
Для поддержки запросов, которые используют временные таблицы вместе с постоянными таблицами, в представление aqo_data добавлено поле
tmpoidsи в функцию aqo_data_update добавлен параметрtmpoids.Устранено условие гонки при вызове функции
aqo_cleanupиз разных сеансов.Устранена проблема, из-за которой данные обучения aqo не сохранялись для запросов с материализацией.
Устранена проблема с обучением на узлах, работа на которых прекращается досрочно. Теперь aqo обучается на таких узлах с минимальным значением
reliability, только если фактическое число строк превышает ожидаемое число строк. В остальных случаях механизм обучения отключён.
Реализована возможность настраивать LDAP-аутентификацию для pgbouncer с помощью PAM (Pluggable Authentication Modules, подключаемые модули аутентификации). За дополнительной информацией обратитесь к разделу Настройка LDAP-аутентификации для pgbouncer.
Обновлено расширение pg_proaudit. Включены следующие усовершенствования:
Добавлена поддержка формата CEF для файлов журналов событий.
Скорректирован вывод pg_proaudit. Теперь поля
xidиvxidне отображаются, если имеют нулевое значение.
Обновлено расширение pgpro_stats. Включены следующие исправления и усовершенствования:
Реализована возможность отслеживать команды утилиты по
query_id, как в pg_stat_statements. Ранее команды утилиты отслеживались путём строгого сравнения по текстовым строкам запросов, и поэтому их нельзя было корректно нормализовать.Исправлена ошибка сегментации, которая могла возникать при определении дополнительных метрик. Ошибка была вызвана проблемой при выделении памяти.
Модуль pg_query_state обновлён до версии 1.2, в которую добавлены функции pg_progress_bar и pg_progress_bar_visual, позволяющие отслеживать текущий прогресс выполнения запросов.
Улучшено поведение утилиты pg_waldump при использовании с сегментом, который содержит незаконченную запись WAL. Ранее, если обнаруживалась незаконченная запись WAL, утилита выводила в журнал сообщение о недопустимом заголовке страницы, которое вводило в заблуждение. Теперь сообщение в журнале явно информирует о том, что была найдена незаконченная запись WAL, а также предоставляет LSN начала записи и LSN её потерянной части.
E.3.2. Утилиты управления #
Добавлена поддержка защищённого режима управляющего канала biha.
Добавлена возможность перезапуска кластера с минимальным временем простоя с помощью команды
shardmanctl restart rolling.Добавлен механизм shardmand, позволяющий выводить список запущенных в системе служб.
Добавлены новые параметры конфигурации для работы с точками синхронизации:
syncpointInterval, который задаёт частоту создания точки синхронизации (в секундах),syncpointEnabled, который включаетmonitorдля периодического создания точек синхронизации, иsyncpointLimit, который задаёт число последних хранимых точек синхронизации.Добавлена возможность выполнять команды вне блока транзакции с помощью параметра
--no-transactionкомандыshardmanctl forall.Добавлена возможность просмотра информации о сегментированных и глобальных таблицах с помощью конечной точки
/shardmand/v1/tablesв shardmand.Добавлена возможность запуска кластера с аутентификацией по SSL-сертификатам.
Добавлена возможность работы детектора взаимоблокировок и monitor для зависших транзакций из-под операционного пользователя.
Добавлена возможность определения переменной, которая используется в пользовательском скрипте, с помощью параметра shardmanctl bench run -D.
Изменён алгоритм обновления конфигурации BiHA. Теперь узел-последователь и рефери ждут обновления конфигурации на лидере и только потом обновляют её у себя. Это позволяет снизить значение параметра
max_wal_senders.Отменено цветовое оформление уровня журналирования при выполнении команды
shardmanctl.Гарантирована согласованность данных при формировании списка пользователей.
Улучшена информативность вывода команды
shardmanctl config updateв случае ошибки.Снято ограничение, при котором нельзя было создавать глобальные и сегментированные таблицы во время резервного копирования.
Снято ограничение на снижение чувствительных параметров спецификации:
max_connections,max_prepared_transactionsиmax_worker_processes. Ранее это приводило к проблемам при откате конфигурации.Добавлена проверка целостности, которую теперь можно запустить после каждого изменения конфигурации, если для параметра
certVersionзадано значениеtrue.Изменено поведение
keeper, теперь соединения удерживаются вместо закрытия.Обновлены механизмы проверки согласованности и пользовательских схем.
Обновлена команда shardmanctl config update, которая теперь может изменять параметр
certVersion.Обновлены права роли администратора, который теперь может изменять параметр shardman.sync_schema.
Обновлена версия клиента etcd до 3.6.4.
Исправлена логика «умного» восстановления схемы
shardman: теперь командаshardmanctl schema restore --smartкорректно проверяет и восстанавливает все недостающие расширения PostgreSQL.Изменено поведение системы при запуске команды
shardmanctl probackup backup. При создании резервной копии добавлено ожидание готовности лидеров и резервов во избежание перехода лидеров в состояниеROпри работе команды.Исправлена ошибка уровня
PANICпри работе командыshardmanctl set.Исправлена ошибка, которая ранее приводила к сбою режима
referee_with_walпри запуске кластера Postgres Pro Shardman с табличными пространствами.Исправлены уязвимости BDU:2025-02344 и GHSA-fv92-fjc5-jj9h.
Исправлена уязвимость GO-2025-3770.
Исправлена ошибка, которая в редких случаях ранее приводила к сбою команды
shardmanctl status.Исправлена ошибка, которая в редких случаях ранее приводила к сбою при добавлении новых узлов, если в схеме
shardmanбыли глобальные таблицы с данными.Исправлено поведение, ранее приводившее к ошибке репликации, если совпадали пользовательские пароли для пользователей BiHA и
postgres.Исправлена ошибка, при которой было невозможно добавить новые узлы в кластер, если в схеме
shardmanбыли глобальные последовательности.Устранён сбой рефери при изменении следующих параметров:
max_connections, max_wal_sendersshared_buffers,max_prepared_transactionsиmax_worker_processes.Исправлена ошибка восстановления расширений, теперь восстанавливаются все расширения, а не только Postgres Pro Shardman.
Исправлена ошибка, из-за которой появлялось сообщение
PANICво время процесса перебалансировки.Исправлена ошибка, которая могла привести к перезапуску экземпляра из-за кратковременной потери соединения с etcd.
Исправлено отображение индикаторов прогресса при восстановлении из резервной копии.
Исправлена ошибка, которая ранее приводила к зависанию процесса восстановления одного сегмента.
Исправлена ошибка запуска системы при включённом
svt5.