Дата выпуска: 2026-04-02
Это первый выпуск Postgres Pro Shardman 18. Он основан на Postgres Pro Shardman 17.9.2 и PostgreSQL 18.3 и включает все новые возможности, появившиеся в PostgreSQL 18, а также исправления ошибок, вошедшие в корректирующий выпуск PostgreSQL 18.3. Он также наследует часть возможностей Postgres Pro Enterprise 18.3.2. Подробное описание вы можете найти в разделах замечаний к выпуску PostgreSQL 18 и замечаний к выпуску PostgreSQL 18.3.
Список расширений и дополнительных утилит Postgres Pro Shardman, а также основных видимых пользователю отличий от ванильной версии PostgreSQL, в том числе список унаследованных от Postgres Pro Enterprise возможностей, приведён в Разделе 2. Ниже перечислены значимые отличия этой версии от PostgreSQL 18.3.2 и Shardman 17.9.2:
Отличия этой версии от Postgres Pro Shardman 17.9.2:
Добавлен новый подход для глобальных объектов. Теперь они называются управляемые (распределённые/реплицированные и внутренние) и локальные.
Обновлён механизм создания управляемых объектов.
Добавлена автоматическая проверка метаданных словарей для DDL-операций.
Добавлена новая метрика shared_xmin_raw в представление shardman.pg_stat_csn, которая отображает старейший XID, исключая влияние от горизонта идентификаторов транзакций каталога.
Добавлено представление shardman.pg_stat_fast_path и его глобальное представление shardman.gv_stat_fast_path для просмотра количества запросов с оптимизацией по быстрому пути и без неё, включая запросы к локальным таблицам.
Добавлена поддержка нескольких ключей сегментирования для FastPath.
Добавлена процедура shardman.global_analyze_async для анализа управляемых таблиц всего кластера, выполняемого для каждого узла параллельно.
Добавлена функция shardman.pg_stat_reset, которая сбрасывает некоторые счётчики статистики до нуля в зависимости от аргумента.
Улучшен разбор простых запросов и планирование для секционированных таблиц.
Нормализовано поведение системы при повторном обновлении строк на удалённых узлах в модифицирующем WITH.
Ускорена работа silkworm, теперь он может запускать параллельные запросы.
Реализована обёртка сторонних данных для Postgres Pro Shardman. Теперь нет необходимости устанавливать расширение postgres_fdw для доступа к сторонним таблицам на других серверах Postgres Pro Shardman.
Оптимизирован перенос статистики между узлами.
Сокращено время удержания горизонта, что приводит к меньшему раздуванию.
Удалён список реплицированных таблиц из значений внешних серверов.
Улучшения, унаследованные от Postgres Pro Enterprise 18.3.2:
Реализована возможность для оптимизатора добавлять узлы плана Index Only Scan ниже узлов Append, которые генерируются для предложений OR, если для параметра enable_appendorpath установлено значение on. Это позволяет создавать более эффективные планы запросов и улучшать производительность.
Реализована возможность для оптимизатора упрощать конструкции NOT NOT выражение до выражение в связанных подзапросах, тем самым позволяя «подтягивать» эти подзапросы в основной план запроса и улучшать производительность.
Добавлена возможность для оптимизатора преобразовывать связанные подзапросы с выражением равенства в связанные подзапросы IN, если для параметра extra_query_transformations установлено значение full. Это позволяет оптимизатору «подтягивать» получившиеся подзапросы и улучшать производительность.
Добавлена новая возможность планировщика запросов преобразовывать предложения OR в запросы UNION ALL. Такие преобразования могут значительно повысить производительность и особенно полезны для запросов, обращающихся к нескольким таблицам. Чтобы включить эту функциональность, используйте новый параметр конфигурации enable_orunion_transformation.
Расширена область применения системного каталога в оперативной памяти. Теперь он также используется для временных функций, процедур и последовательностей. Ранее его можно было использовать только для временных таблиц и их индексов.
Добавлена экспериментальная возможность многосегментной вставки, которая позволяет осуществлять массовую вставку данных в одну таблицу несколькими параллельными потоками. Эта функциональность пока не рекомендована для использования в производственной среде.
Сокращён объём отладочной информации, которая отправляется клиенту или записывается в журнал сервера. Сообщения уровня важности DEBUG1 об операциях с временными таблицами больше не выводятся.
Оптимизирована производительность заморозки кортежей на странице.
Добавлена возможность массово добавлять строки из результатов запроса при создании таблицы командой CREATE TABLE AS с включённым параметром хранения append_optimized.
Добавлено значение aggressive параметра хранения append_optimized. Оно позволяет всегда создавать новые страницы для добавляемых строк вместо поиска подходящей страницы в карте свободного пространства. Это улучшение оптимизирует массовое добавление строк в таблицы, в которых свободное пространство распределено по многим страницам.
Возвращена возможность создавать временные объекты в постоянных табличных пространствах и указывать постоянные табличные пространства в параметре конфигурации temp_tablespaces.
Добавлены следующие изменения в реализацию crash_info:
Изменён формат имени выходных файлов crash_info, в котором теперь указывается дата и время с точностью до микросекунд.
Реализованы следующие исправления и усовершенствования для CFS:
Улучшена производительность CFS, которая сейчас использует контексты сжатия при использовании применяемого по умолчанию алгоритма zstd.
Изменено поведение функции cfs_compression_ratio. Теперь эта функция возвращает значение 1 для несжатых отношений.
Добавлена функция cfs_is_relation_compressed для проверки, является ли указанное отношение сжатым.
Изменён уровень важности сообщения на ERROR при ошибках конвертации страниц из 32-битного в 64-битный формат. Ранее происходил сбой сервера с PANIC.
Добавлена утилита pgpro_wrap для сокрытия (обфускации) кода PL/pgSQL. Утилита помогает защитить хранимые процедуры и функции от несанкционированных изменений.
Обновлён модуль aqo. Включены следующие исправления и усовершенствования:
Оптимизирован механизм обучения aqo. Теперь aqo игнорирует узлы плана, которые не влияют на оценку количества строк, например узлы Materialized и Sort. Эти игнорируемые узлы больше не пишут детали aqo в вывод команды EXPLAIN и не добавляются в статистику aqo.
Изменена реализация механизма вытеснения из кеша давно неиспользуемых данных (LRU) для режима auto. Теперь aqo использует два разных кеша для aqo_data и aqo_query_texts. При достижении предела aqo.dsm_size_max алгоритм LRU сначала удаляет данные из aqo_query_texts при их наличии, а только потом из aqo_data.
pgbouncer обновлён до версии 1.25.1 для всех ОС, кроме Альт СП 8, для которой продолжает поставляться pgbouncer 1.24.0.
Обновлено расширение pg_proaudit. Включены следующие усовершенствования:
Добавлен параметр конфигурации pg_proaudit.log_rows, который включает или отключает регистрацию количества строк, затронутых SQL-командой.
Добавлено поле в журнал событий: продолжительность подключения. Теперь записи о событиях DISCONNECT содержат общую длительность подключения наряду с другими параметрами подключения.
Обновлено расширение pgpro_stats. Включены следующие исправления и усовершенствования:
Восстановлена возможность агрегирования статистики по сеансам, которая ранее была удалена как неиспользуемая. Будет ли агрегироваться статистика по сеансам, определяет параметр конфигурации pgpro_stats.track_sessions.
Улучшено поведение функций трассировки сеансов. Теперь функции pgpro_stats_trace_insert и pgpro_stats_trace_update завершаются ошибкой, если в передаваемой последовательности пар ключ-значение какой-либо атрибут фильтра встречается несколько раз. Если функции pgpro_stats_trace_update передаётся неправильный аргумент, изменения фильтра более не происходят. Функция pgpro_stats_trace_show теперь возвращает в точности те значения атрибутов explain*, которые были заданы для фильтра.
Отличия этой версии от Postgres Pro Shardman 17.9.2:
Добавлена поддержка катастрофоустойчивого кластера, предоставляющего более высокий уровень отказоустойчивости в распределённых системах.
Добавлен переход для кластера и keeper из режима резервного кластера и в этот режим с помощью команд shardmanctl cluster standby enable и shardmanctl cluster standby disable.
Добавлен механизм автоматического создания слотов на ведущем и резервном узлах.
Улучшена логика формирования файлов точки синхронизации на основе обработки сегментов WAL.
Добавлена возможность просматривать файлы хранилища с помощью команд shardmanctl files list и shardmanctl files get.
Добавлена остановка pg_receivewal до инициализации резервного кластера из резервной копии с помощью shardmanctl probackup restore.
Добавлено автоматическое обновление конфигурации резервного кластера, которая теперь следит за изменениями конфигурации ведущего кластера в ОЦОД, чтобы в дальнейшем применить их на РЦОД.
Добавлена команда shardmanctl cluster standby config, которая создаёт конфигурационный файл для РЦОД.
Добавлены новые возможности управления резервным кластером, а именно ведущими сегментами и резервными узлами, через параметры --lost-shards, --lost-nodes и -s/--soft команды shardmanctl cluster standby disable.
Разрешена возможность избежать ситуации, при которых CSN не записывается в WAL из-за отсутствия пишущей нагрузки, с помощью параметра ShardSpec.noopTransactionMonitorTimeout.
Обновлена команда shardmanctl cluster status, которая теперь отображает статус кластера в резервном режиме.
Добавлена возможность синхронизации экземпляра кластера в РЦОД с экземпляром кластера в ОЦОД с помощью команды shardmanctl cluster standby catchup.
Улучшен механизм обновления.
Добавлен механизм shardmand, позволяющий отображать работающие в системе службы.
Добавлена возможность конвертировать выгрузку в формате JSON в бинарный внутренний формат распределённого хранилища конфигурации с помощью команды shardmanctl store convert.
Добавлена команда shardmanctl cluster maintenance set для управления режимом обслуживания для указанных экземпляров PostgreSQL.
Обновлена логика работы со сторонними утилитами, которые инициируются shardmand и shardmanctl, с помощью новых переменных окружения SDM_PG_MAJOR,SDM_BIN_PATH и SDM_PROBACKUP_PATH, а также общих параметров -bin-path, probackup-path и -pg-major.
Создано распределённое хранилище на основе shardmand для замены etcd. Теперь каждый экземпляр shardmand является узлом в новом распределённом хранилище.
Добавлена команда shardmanctl store conflicts, отображающая конфликты хранилища.
Улучшена логика проверки хранилища с помощью обновлённых команд shardmanctl.
Обновлена команда shardmanctl cleanup для работы с новым хранилищем конфигурации.
Обновлена команда shardmanctl store для поддержки распределённого хранилища.
Обновлён механизм обнаружения. Добавлена поддержка двух параллельных экземпляров shardmand на одном узле.
Обновлён процесс удаления узла, теперь при этом из хранилища конфигурации удаляется информация об узлах.
Разрешена нормализация распределённого хранилища конфигурации в зависимости от текущей конфигурации узла кластера с помощью shardmanctl store normalize.
Разрешено удаление хоста из распределённого хранилища после удаления последнего экземпляра БД на хосте.
Удалён параметр конфигурации DataDir. Теперь обязательным является параметр --data-dir или использование переменной окружения SDM_DATA_DIR.
Добавлена поддержка процесса резервного копирования в соответствии с версией 3 pg_probackup3. Данная функциональность в настоящий момент является экспериментальной, рекомендуется использовать её в производственной среде с осторожностью.
Разрешено слияние инкрементальных резервных копий с помощью параметров команд shardmanctl probackup merge --merge-from-id и shardmanctl probackup merge --merge-interval.
Добавлены параметры управления буфером в команду shardmanctl probackup.
Добавлена команда shardmanctl probackup retention, которая определяет политику хранения резервных копий для экземпляра или каталога, а также запускает процесс слияния или удаления резервных копий в зависимости от заданных параметров.
Добавлена проверка загрузки pgpro_bindump в shared_preload_libraries и walsender_plugin_libraries.
Обновлена работа команд shardmanctl probackup validate, shardmanctl probackup set-config, shardmanctl probackup show-config и удалена команда shardmanctl probackup checkdb.
Адаптирован процесс резервного копирования для работы с S3-совместимым хранилищем.
Улучшена работа утилит.
Добавлена возможность сохранения или удаления всех локальных таблиц с помощью параметра --copy-local-tables при добавлении нового сегмента.
Добавлен параметр --for-upgrade для команды shardmanctl restart и параметр --with-restart для команды shardmanctl upgrade.
Добавлена возможность пробрасывать команды PSQL на конкретный сегмент с помощью команды shardmanctl psql.
Добавлена возможность получить строку подключения для конкретного сегмента с помощью команды shardmanctl getconnstr --shard.
Добавлена возможность задавать сокеты с помощью параметра --ipc-socket shardmand.
Добавлена проверка занятых портов для следующих команд, чтобы предотвратить их зависание: shardmanctl init, shardmanctl nodes add, shardmanctl shard add.
Добавлена поддержка переменной окружения SDM_SERVER_HOST для определения принадлежащих shardmand экземпляров. Также добавлена поддержка нескольких хостов с помощью команды shardmanctl --server-host.
Добавлена возможность останавливать или запускать отдельные экземпляры с помощью команд shardmanctl nodes start, shardmanctl nodes stop, shardmanctl shard start и shardmanctl shard stop с указанием порта PostgreSQL в параметре --node=host:port.
Запрещён запуск shardmanctl и shardmand от имени корневого пользователя.
Обновлён демон shardmand, теперь он не будет запускаться, если на каталог с данными будут заданы некорректные права.
Обновлена команда shardmanctl cluster status, теперь она не включает экземпляры узлов referee или referee_with_wal, если команда выполняется на кластере в режиме standby.
Обновлён вывод команд shardmanctl config get и shardmanctl config generate, теперь скрываются некоторые поля, для которых не задано значение.
Обновлены команды shardmanctl, теперь они принимают файл спецификации в формате YAML и автоматически определяют формат.
Доработана логика передачи переменных окружения в командах семейства shardcmanctl bench.
Расширено журналирование команд управления экземплярами кластера.
Обновлён процесс остановки кластера и сегмента. Теперь сначала полностью останавливается ведущий узел, после него останавливаются резервные кластера, сегменты и узлы с помощью соответствующих команд shardmanctl cluster stop, shardmanctl shard stop, shardmanctl nodes stop.
Обновлены команды shardmanctl status, shardmanctl status transactions, shardmanctl rebalance, shardmanctl restart, and shardmanctl restart rolling, которые теперь могут быть запущены на уровне кластера, поэтому теперь их синтаксис следующий: shardmanctl cluster status, shardmanctl cluster status transactions, shardmanctl cluster rebalance, shardmanctl cluster restart, shardmanctl cluster restart rolling.
Обновлён синтаксис команд shardmanctl set и shardmanctl unset, обновлённый синтаксис следующий: shardmanctl params set и shardmanctl params unset.
Обновлена команда shardmanctl params unset, которую теперь нельзя вызвать для walsender_plugin_libraries.
Адаптировали утилиты Postgres Pro Shardman для работы с shardman_fdw.
Обновлена команда the shardmanctl config get, которая теперь работает без метаблокировки.
Улучшена логика проверки словарей для команды shardmanctl cluster status , теперь учитываются изменения ядра.
Усовершенствована проверка согласованности индексов, расширений, процедурных языков, последовательностей, пользователей, таблиц, правил сортировки, табличных пространств, схем и функций с разными флагами параметра --filter команды shardmanctl schema verify.
Разрешено выполнение команд вне блока транзакции с помощью флага --no-transaction команды shardmanctl forall.
Добавлена проверка дублирования пользователей в sdmspec.json при инициализации кластера.
Добавлена возможность прокидывать переменные окружения для команд pg_ctl.
Добавлена возможность указать порт shardmand при добавлении узлов.
Улучшена логика повышения в случае потери кворума.
Обновлён механизм ручного переключения сегментов, теперь учитываются приоритеты узлов.
Удалены параметры конфигурации syncPointMonitorLimit и syncPointMonitorEnabled.
Обновлён postgres_fdw для работы с распределёнными системами, теперь он называется shardman_fdw. Поэтому при обновлении с предыдущих версий Postgres Pro Shardman после запуска shardmanctl upgrade запустите также drop extension postgres_fdw на каждом узле кластера. Кроме того, необходимо удалить postgres_fdw из shared_preload_libraries.
Прекращена поддержка сохранения параметра relations в свойствах внешних серверов.
Обновлена поддерживаемая версия bihactl до 2.
Улучшена логика хранения выгрузки схемы shardman и добавлено сжатие данных.
Оптимизирована работа блокировок для операций, требующих монопольный доступ к кластеру.
Удалены параметры конфигурации shardmanSchemaDumpMonitorDisabled и shardmanSchemaDumpMonitorTick как избыточные для процесса выгрузки и резервного копирования.
Исправлены следующие уязвимости: CVE-2025-61724, CVE-2025-58187, CVE-2025-47912, CVE-2025-58183, CVE-2025-61723, CVE-2025-58186, CVE-2025-58185, CVE-2025-58188, CVE-2025-61725, CVE-2025-61727, CVE-2025-61729, CVE-2025-61726, CVE-2025-68121, CVE-2026-33186.