E.1. Postgres Pro Shardman 17.5.1 #

Дата выпуска: 2025-07-02

Это первый выпуск Postgres Pro Shardman, он основан на Postgres Pro Enterprise 17.5.1 и Shardman 14.18.2, в нём добавлены новые возможности и улучшена производительность. Важные изменения перечислены ниже.

E.1.1. Ядро и расширения #

  • Добавлена поддержка команды LOCK TABLE для глобальных и сегментированных таблиц.

  • Переименовано поле is_reply представления shardman.silk_routing, теперь оно называется is_outgoing. Поле принимает значение true, если маршрут был создан исходящим сетевым соединением, и false, если входящим.

  • Улучшена работа Silk для высоких значений shardman.silk_unassigned_job_queue_size.

  • Обновлены значения по умолчанию параметров конфигурации ведения журнала для всех новых инсталляций Postgres Pro Shardman:

    • logging_collector: on

    • log_directory: {{dataDir}}

    • log_filename: postgres-{{cluster}}-{{shard}}-{{host}}-{{keeperID}}.log

  • Удалены параметры конфигурации csn_max_commit_shift и csn_max_snapshot_shift. Добавлены параметры конфигурации csn_max_shift и csn_max_shift_error для работы со снимками CSN распределённых запросов и с импортированными снимками.

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

  • Изменена логика блокировок, что позволяет существенно сократить использование ресурсов процессора в случае восстановления при загрузке на физических репликах, используемых в качестве источника для логической репликации c большим числом принимающих сторон. Процессы walsender больше не замедляют применение WAL, поскольку ранее используемая циклическая блокировка была заменена на более эффективный примитив синхронизации.

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

  • Добавлена возможность для демона автоочистки обрабатывать индексы таблицы в параллельном режиме. Параметр хранения таблицы parallel_autovacuum_workers управляет тем, должна ли она обрабатываться в параллельном режиме, и определяет количество дополнительных параллельных процессов автоочистки, которые можно запустить для обработки таблицы. Количество процессов автоочистки в кластере, которые могут использоваться для параллельной обработки таблиц, ограничивается параметром конфигурации autovacuum_max_workers. В настоящее время функциональность параллельной автоочистки находится в экспериментальной фазе, предназначена только для целей тестирования, и её пока не следует использовать в производственной среде.

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

  • Оптимизирована производительность при работе с метаданными таблиц за счёт получения информации об атрибутах с использованием системного кеша вместо чтения напрямую из системного каталога.

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

    • Добавлена обработка сигналов SIGILL в процесс обработки crash_info.

    • В выходные файлы crash_info добавлены новые сведения: время запуска процесса и текст запроса при планировании.

  • Ограничены действия, которые суперпользователи могут совершать с временными отношениями из других сеансов. Теперь с такими отношениями можно выполнять только команду DROP TABLE . Если для параметра конфигурации skip_temp_rel_lock установлено значение on, их запрещено даже удалять.

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

    • Добавлены новые типы объектов: CATALOG RELATION и CATALOG FUNCTION.

    • Добавлены новые поля событий: UUID, XID и VXID. Теперь стало возможно определить событие по его UUID и идентификатору транзакции (если применимо).

    • Исправлено поведение параметра конфигурации pg_proaudit.log_catalog_access, теперь оно отражает новую логику регистрации событий для объектов системного каталога.

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

  • Модуль pgpro_pwr обновлён до версии 4.9, в которой в основном улучшена производительность. Основные изменения перечислены ниже:

    • Добавлена поддержка pgpro_stats 1.9-sdm4.

    • Добавлена возможность определять режим сбора информации о размере отношений глобально при помощи параметра конфигурации pgpro_pwr.relsize_collect_mode расширения или для сервера при помощи функции set_server_size_sampling.

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

    • Добавлена возможность предварительного просмотра параметров хранения таблиц и индексов в разделе отчёта «Schema object statistics» (Статистика по объектам схемы).

  • Расширение pgpro_stats обновлено до версии 1.9-sdm4, в которую включены следующие усовершенствования:

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

    • Имена атрибутов фильтра explain_* трассировщика сеансов приведены в соответствие с именами параметров конфигурации трассировки сеансов.

    • Изменён формат файла выгрузки статистики и соответствующие процедуры сохранения/загрузки.

    • Реализовано отключение функциональности трассировки сеансов, если не указаны соответствующие фильтры.

    • Запрещено одновременно указывать pgpro_stats и pg_stat_statements в shared_preload_libraries. Если они указаны вместе, сервер баз данных не запустится.

  • Экспериментальное расширение vops признано устаревшим.

E.1.2. Утилиты управления #

  • Изменены значения по умолчанию для флагов -t (--transactions) и -T (--time) команды shardmanctl bench run на 10 и 0 соответственно.

  • Оптимизировано повышение резервного сервера до ведущего.

  • Добавлено ограничение на изменение файла pg_hba.conf, если для параметра certVersion задано значение true.

  • Добавлен параметр --reinit-before-restore, позволяющий переинициализировать кластер с такой же топологией перед восстановлением.

  • Оптимизированы тайм-ауты опроса кластера.

  • Добавлена поддержка {rgid} для параметра --tablespace-mapping команды shardmanctl probackup restore.

  • Добавлена возможность проверки резервной копии на совместимом кластере.

  • Оптимизирован процесс поиска ведущего узла во избежание зависания кластера.

  • Добавлен boot_uuid в демон загрузки shardmand.

  • Добавлена возможность менять параметр max_wal_senders через изменение параметра конфигурации additionalWalSenders командой shardmanctl config update.

  • Добавлена команда shardmanctl --log-format, которая задаёт формат вывода журнала.

  • Добавлен параметр --message в команды shardmanctl cluster stop и shardmanctl restart, чтобы показывать причину остановки или перезапуска кластера.

  • Добавлено поле CertVersion в файл конфигурации sdmspec.json.

  • Обновлён параметр конфигурации syncPointMonitorEnabled, который теперь сохраняет историю точки синхронизации, если задано значение true. Размер истории задаётся параметром syncPointMonitorLimit.

  • Обновлены сообщения об ошибке для keeper, теперь они очищаются после каждой успешной операции, которая обновляет конфигурацию.

  • Добавлена команда shardmanctl schema verify для проверки единообразия информации о секциях, расширениях, таблицах, ролях, схемах и последовательностях.

  • Добавлена возможность использования probackup как метода резервного копирования для BiHA.

  • Добавлена защита от падения кластерного ПО при запрете записи в файл конфигурации pg_hba.conf.