E.1. Postgres Pro Shardman 18.3.2 #
Дата выпуска: 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:
E.1.1. Ядро и расширения #
Отличия этой версии от 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*, которые были заданы для фильтра.
E.1.2. Утилиты управления #
Отличия этой версии от 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-socketshardmand.Добавлена проверка занятых портов для следующих команд, чтобы предотвратить их зависание:
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, andshardmanctl 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.