Postgres Pro Standard 12.18.1: примечания к релизу

E.1. Postgres Pro Standard 12.19.1

Дата выпуска: 2024-05-20

E.1.1. Обзор

Этот выпуск основан на PostgreSQL 12.19 и Postgres Pro Standard 12.18.2. Все усовершенствования, унаследованные от PostgreSQL 12.19, перечислены в Замечаниях к выпуску PostgreSQL 12.19. Другие важные изменения и улучшения перечислены ниже:

  • Отключён тайм-аут запуска системы: значение параметра TimeoutSec в systemd теперь по умолчанию равно 0. Ранее большие БД могли не успеть запуститься за указанное в параметре время.

  • Понижен уровень протоколирования во время создания указанной точки восстановления во время тайм-аута между контрольными точками только для неактивных баз. Это позволяет удалить из журнала лишние сообщения.

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

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

  • Прекращена поддержка Astra Linux «Орёл» 2.12.

  • Прекращена поддержка Astra Linux «Смоленск» 1.6.

  • Прекращена поддержка РЕД ОС 7.2 МУРОМ.

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

    • Добавлена поддержка API Zabbix 6.4: обработка устаревших параметров для запросов аутентификации.

    • Исключено кеширование метрики pgsql.connections[max_connections].

    • Обновлены правила ротации журналов по умолчанию.

    • Выполнена подготовка для поддержки Python 3.12.

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

    • Исправлено несоответствие типов для pgpro_stats и pg_wait_sampling.

    • Исправлена ошибка в правах роли mamonsu, созданной с помощью bootstrap.

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

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

    • Добавлена возможность ограничить скорость записи на диск с помощью параметра --write-rate-limit==bitrate (Mbps, Gbps).

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

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

    • Расширено действие параметра --dry-run для всех команд pg_probackup.

    • По умолчанию при резервном копировании в режиме STREAM теперь создаётся временный слот, если не указано иное.

    • Алгоритм сжатия по умолчанию изменён на zstd. Если zstd не поддерживается системой, будет выбран алгоритм lz4. Параметр --compress теперь задаёт значения по умолчанию для --compress-level и --compress-algorithm.

  • Добавлена функция pgv_exists_elem в pg_variables, которая проверяет, существует ли элемент с ключом в общей переменной-коллекции.

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

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

    • Исправлена проблема, препятствовавшая мониторингу, когда представление pgpro_stats_statements содержало большое количество строк с одинаковыми значениями plan и queryid, но разными значениями planid. Проблема была вызвана ошибкой в разборе дерева планов, содержащего узел T_Memoise.

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

  • Исправлена ошибка «ERROR: query failed: ERROR: tablespace "XXXX" does not exist» (ОШИБКА: запрос не выполнен: ОШИБКА: табличное пространство «XXXX» не существует), которая могла возникать, когда команда pg_repack пыталась реорганизовать таблицы в табличном пространстве, имя которого начинается с цифры. Основная причина проблемы заключалась в отсутствии дополнительных кавычек, которые ожидались pg_repack.

  • Добавлен параметр --save-fullpage в pg_waldump. Он позволяет сохранять образы полных страниц, включённые в записи WAL, в заданный целевой каталог.

E.1.2. Миграция на версию 12.19.1

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

Встроенные функции numeric_eq, numeric_ne, numeric_gt, numeric_ge, numeric_lt и numeric_le фактически являются герметичными, но они не имели соответствующей пометки в Postgres Pro Standard версии 12.1.1, в результате чего запросы могли выполняться неоптимально. В частности, это отрицательно сказывалось на производительности запросов при использовании политик защиты на уровне строк. В версии 12.2.1 это было исправлено для новых инсталляций в результате корректировки исходных данных каталога, но существующие инсталляции сохранят некорректные пометки, пока вы не исправите записи этих функций в pg_proc. Чтобы их исправить, обновите экземпляр сервера с помощью pg_upgrade либо вручную измените их в существующем кластере, выполнив во всех его базах данных соответствующие команды ALTER FUNCTION. Например:

ALTER FUNCTION pg_catalog.numeric_eq LEAKPROOF

При обновлении с версии Postgres Pro 12.6.1 и ниже перестройте покрывающие индексы с неключевыми столбцами, для которых на уровне таблицы определено правило сортировки.

Если вы используете PTRACK в процедуре резервного копирования, реализуемой c помощью утилиты pg_probackup, и обновляетесь с Postgres Pro версии 12.6.2 или ниже, сделайте полную резервную копию базы данных после обновления.