E.1. Postgres Pro Shardman 17.7.1 #

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

Этот выпуск основан на Postgres Pro Shardman 17.6.1 и PostgreSQL 17.7. Он также наследует часть возможностей и исправлений Postgres Pro Enterprise 17.7.1. Все новые возможности, появившиеся в PostgreSQL 17, вы можете найти в разделе Замечания к выпуску PostgreSQL 17. Ниже перечислены значимые отличия этой версии от Postgres Pro Shardman 17.6.1.

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

Отличия этой версии от Postgres Pro Shardman 17.6.1:

  • Добавлено новое представление shardman.pg_stat_fast_path и его глобальный аналог shardman.gv_stat_fast_path для просмотра количества запросов, использовавших и не использовавших механизм оптимизации FastPath, в том числе запросы к локальным таблицам.

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

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

  • Добавлена поддержка нескольких ключей сегментирования для FastPath.

  • Обновлены возможности Silk путём добавления порога времени, при достижении которого рабочий процесс считается работающим слишком долго, с помощью параметра shardman.silk_long_job_time, а также путём добавления возможности задавать максимальное количество рабочих процессов, которое может быть запущено Silk, с помощью параметра shardman.silk_max_workers.

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

Улучшения и исправления, унаследованные от Postgres Pro Enterprise 17.7.1:

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

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

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

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

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

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

  • Ограничено максимальное количество присваиваемых идентификаторов транзакций, теперь оно равняется 263. Кроме того, при достижении порогового значения в 10 миллионов XID теперь выводится предупреждение. При достижении максимального количества XID новые транзакции перестают запускаться, но запросы только на чтение продолжают выполняться.

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

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

    • Устранена проблема CFS со сжатием файлов отношений, в которых OID превышал значение INT32_MAX. Проблема возникала при переносе таблиц в табличное пространство CFS.

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

  • Исправлена ошибка некорректного вычисления внутреннего порогового значения vacuum_freeze_min_age, которое должно равняться половине значения autovacuum_freeze_max_age. Ранее эта ошибка могла приводить к некорректному внутреннему вычислению параметров автоочистки, и, как следствие, лишним запускам очистки.

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

  • Добавлены новые значения переменной окружения PGPRO_TUNE, используемой initdb.

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

    • Улучшен механизм обучения aqo на подзапросах.

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

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

    • Добавлена поддержка регистрации следующих типов событий: ANALYZE, DISCARD ALL, DISCARD PLANS, DISCARD SEQUENCES, DISCARD TEMP (для временных таблиц), CHECKPOINT, FETCH и MOVE.

    • Добавлен новый класс событий MISC. Этот класс позволяет регистрировать все события (включая перечисленные выше), не относящиеся к другим классам.

    • Добавлен новый метод регистрации событий безопасности. Теперь события безопасности в формате CEF можно не только записывать в отдельный файл, но и передавать в syslog.

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

    • Исправлена проблема, из-за которой pg_proaudit не регистрировал события безопасности в файл CEF.

    • Исправлена проблема, из-за которой расширение pg_proaudit не регистрировало события для команды INSERT после CREATE в анонимных блоках кода (команда DO) и хранимых процедурах/функциях.

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

  • Обновлён плагин pgpro_bindump. В новой версии исправлена проверка уровня сжатия. Ранее применялся одинаковый диапазон уровней сжатия независимо от выбранного алгоритма.

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

    • Улучшено отслеживание времени функцией take_sample.

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

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

  • Приложение pgpro_stats обновлено до версии 1.10-sdm4, в которой были исправлены некоторые ошибки и появились новые возможности:

    • В представления pgpro_stats_statements и pgpro_stats_totals включены новые поля, добавленные в pg_stats_statements в PostgreSQL 18. Также были обновлены соответствующие функции.

    • Добавлена функция pgpro_stats_statements_filtered, которая фильтрует статистику, аналогичную доступной в представлении pgpro_stats_statements, по одному или нескольким полям: userid, dbid, queryid и planid. Вызов этой функции работает быстрее, чем запрос к представлению pgpro_stats_statements с указанием соответствующих значений этих полей.

    • Улучшено поведение pgpro_stats аналогично pg_stat_statements. Включены следующие изменения:

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

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

    • Устранена проблема, которая могла возникать, когда в pgpro_stats дополнительные метрики изменялись «на лету». Теперь при каждом изменении дополнительных метрик требуется перезапуск сервера.

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

Отличия этой версии от Postgres Pro Shardman 17.6.1:

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

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

  • Добавлена возможность направлять команды psql на определённый сегмент с помощью команды shardmanctl psql.

  • Улучшена логика переноса значений переменных окружения для команд shardcmanctl bench .

  • Улучшена логика команды shardmanctl status.

  • Изменено поведение команды shardmanctl config get, которая теперь работает без блокировки метаданных.

  • Обновлено расширение postgres_fdw, оно больше не используется для взаимодействия между узлами. Поэтому при обновлении с предыдущих версий Postgres Pro Shardman после запуска shardmanctl upgrade выполните команду drop extension postgres_fdw на каждом узле кластера. Кроме того необходимо удалить postgres_fdw из shared_preload_libraries. Для коммуникаций внутри кластера теперь используется shardman_fdw.

  • Исправлена проблема shardman.dictionary_check_json, ранее приводившая к некорректной работе функции.