E.2. Postgres Pro Enterprise 16.2.1 #

Дата выпуска: 2024-03-01

E.2.1. Обзор #

Этот выпуск основан на PostgreSQL 16.2 и Postgres Pro Enterprise 16.1.1. Все изменения, унаследованные от PostgreSQL 16.2, описаны в Замечаниях к выпуску PostgreSQL 16.2. По сравнению с Postgres Pro Enterprise 16.1.1 эта версия также содержит следующие изменения:

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

  • Введены два новых модификатора для работы с пакетами: #private и #export. Модификатор #private определяет функции и процедуры как внутренние, а модификатор #export определяет, какие переменные пакета являются публичными.

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

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

  • Оптимизировано потребление памяти при оценке избирательности для каждого элемента массива по сравнению с ванильными версиями PostgreSQL.

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

  • Изменены на lz4 значения по умолчанию параметров конфигурации default_toast_compression и wal_compression, что ускоряет обработку WAL и TOAST и снижает объём используемого дискового пространства.

  • Устранена ошибка сегментации, которая иногда могла возникать из-за упущения в предыдущей оптимизации GROUP BY.

  • Исправлено некорректное преобразование цепочек HOT из 32-битного в 64-битный формат после обновления Postgres Pro Enterprise с помощью pg_upgrade, ранее приводившее к появлению бесконечного цикла очистки. Количество повторных попыток очистки теперь ограничено одной на кортеж. При превышении в журнал заносится ошибка.

  • Устранены условия гонки между рабочим процессом автоочистки и серверными процессами при удалении потерянных таблиц, приводившие к ошибкам «cache lookup failed for relation» (ошибка поиска в кеше для отношения). Теперь при удалении потерянных таблиц процесс автоочистки блокирует пространства имён.

  • Устранена проблема, которая могла возникать во время установки сервера Postgres Pro в системах на базе Debian, включённых в домен с пользователем postgres.

  • Исправлен вывод скрипта pg-setup, в котором при инициализации кластера ошибочно отображалась локаль из переменной окружения LANG. Теперь сообщение о локали на данном этапе не отображается.

  • Устранена проблема, которая могла возникать в случае сбоя рабочего процесса сборки мусора CFS. Раньше для продолжения работы требовался перезапуск сервера, поскольку рабочий процесс не перезапускался автоматически. Теперь рабочий процесс перезапускается, если был недоступен более 10 секунд.

  • Прекращена поддержка Rosa Enterprise Linux Server 7.

  • Прекращена поддержка ОС РОСА «КОБАЛЬТ» (серверная редакция) на платформе РОСА 7.

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

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

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

    • Устранена проблема с отсутствием файлов WAL на целевом сервере после синхронизации прежнего узла-лидера с использованием pg_rewind. Проблема была вызвана значением по умолчанию для параметра wal_keep_size, равным нулю. Теперь, если пользователь не указывает это значение сам, bihactl устанавливает значение 1GB.

    • Сокращено количество сообщений, записываемых в журнал при состоянии узла NODE_ERROR.

  • Обеспечена совместимость с расширением citus, которое предоставляет следующие дополнительные возможности: сегментирование, распределённые таблицы, таблицы-справочники, механизм распределённых запросов, столбцовое хранение и возможность выполнять DML-запросы на любом узле. Это расширение позволяет организовать столбцовое хранение данных и, при необходимости, масштабировать инсталляцию Postgres Pro до кластера распределённых баз данных. Обратите внимание, что при использовании citus существуют некоторые ограничения.

  • Добавлено расширение dbms_lob, позволяющее обращаться к определённым частям больших объектов (LOB) или большим объектам целиком и управлять ими. Обратите внимание, что на данный момент поддерживаются только объекты CLOB, BFILE и временные BLOB.

  • Модуль orafce обновлён до версии 4.9.2.

  • Приложение pg_probackup обновлено до версии 2.7.2 Enterprise, в которой улучшена производительность и исправлены некоторые ошибки. Основные изменения перечислены ниже:

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

    • Устранена проблема, возникавшая во время инкрементального копирования, из-за которой ещё не скопированная таблица удалялась из CFS.

    • Исправлен порядок обработки файлов WAL командой archive-push в случаях, когда количество файлов WAL превышает указанное значение --batch-size.

    • Исправлена ошибка «WAL segment is absent» (сегмент WAL отсутствует), которая могла возникнуть, если размер регистрируемой записи WAL превышал размер сегмента WAL.

    • Устранена ошибка, возникавшая при создании версионированного бакета в VK Cloud.

    • Устранена ошибка сегментации, возникавшая во время выполнения команды merge в S3.

  • Утилита pg_repack обновлена до версии 1.5.0.

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

  • Расширение pg_proaudit обновлено до версии 2.0, в которую включены следующие основные изменения и усовершенствования:

    • Добавлены новые функции pg_proaudit_set_rule и pg_proaudit_remove_rule, которые позволяют создавать и удалять правила регистрации событий соответственно. Эти функции заменили pg_proaudit_set_object, pg_proaudit_set_role, pg_proaudit_reset_object и pg_proaudit_reset_role.

    • Реализована возможность регистрировать группы событий, указав соответствующее значение в аргументе event_type.

    • В представление pg_proaudit_settings добавлен столбец comment, в котором отображается комментарий с описанием созданного правила регистрации событий.

    • Реализована возможность регистрации событий безопасности, связанных с объектами типа PREPARED STATEMENT, а также событий типов DEALLOCATE, EXECUTE и PREPARE.

    • Устранена проблема с некорректной регистрацией событий безопасности для команд CREATE DATABASE, CREATE GROUP, CREATE ROLE, CREATE TABLESPACE и CREATE USER. Раньше эти события регистрировались как SUCCESS после проверки синтаксиса и до выполнения самой команды. Теперь SUCCESS вносится в журнал при завершении выполнения команды, а в случае сбоя она помечается как FAILURE.

  • Расширение pgpro_stats обновлено до версии 1.7, в которой улучшена производительность и исправлены некоторые ошибки:

    • Реализация в расширении pgpro_stats чтения файла «текстов запросов» блоками размером не больше 1 ГБ (подобно аналогичной реализации в pg_stat_statements). Такие большие файлы с текстами запросов встречаются крайне редко, но в случае их наличия ранее происходил сбой в 64-битной ОС Windows (в которой один запрос на чтение файла не может прочитать больше 2 ГБ).

    • Добавлена обратная совместимость функций pgpro_stats_statements и pgpro_stats_totals. Теперь поддерживаются случаи, когда более новая версия загружаемого модуля pgpro_stats используется со старым объявлением SQL функций. Ранее подобные случаи вызывали крах сервера.

  • Модуль pgpro_pwr обновлён до версии 4.4, в которой добавлена поддержка pgpro_stats 1.7, и в отчёты включены новые интерактивные возможности и фильтрация на основе подстроки.

  • Расширение PLV8 обновлено до версии 3.2.2.

  • Модуль sr_plan был обновлён, в новой версии улучшена производительность и исправлены некоторые ошибки:

    • Реализована возможность сохранять разные планы запроса с разными наборами параметризованных констант с помощью уникальной пары queryid и const_hash, где const_hash — это хешированное значение непараметризованных констант. Эта пара ключей заменила srid.

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

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

    • Устранена проблема, из-за которой расширение не могло заморозить план для зарегистрированного запроса, что могло приводить к сбою из-за нехватки памяти при повторной попытке заморозить тот же план.

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

E.2.2. Миграция на версию 16.2.1 #

Если вы производите обновление выпуска Postgres Pro Enterprise, базирующегося на той же основной версии PostgreSQL, достаточно просто установить новый выпуск в текущий каталог инсталляции.

Для перехода с PostgreSQL, а также с выпуска Postgres Pro Standard или Postgres Pro Enterprise, базирующегося на предыдущей основной версии PostgreSQL, обратитесь к инструкциям по миграции на версию 16.