E.16. Postgres Pro Standard 12.10.1

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

E.16.1. Обзор

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

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

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

  • Исправлены параметры уничтожения процессов при нехватке памяти (OOM) в конфигурации службы Postgres Pro. Ранее поправка очков OOM устанавливалась для всех процессов Postgres Pro, а не только для postmaster, поэтому, когда Postgres Pro исчерпывал всю оперативную память, могли уничтожаться другие важные процессы, например, sshd.

  • Добавлена поддержка Rocky Linux 8.

  • Прекращена поддержка устаревших операционных систем Debian 8, Astra Linux «Смоленск» 1.5 и МСВСфера 6.3.

  • Приложение pg_probackup обновлено до версии 2.5.5, в которой по сравнению с версией 2.5.3 были исправлены некоторые ошибки и появились новые возможности:

    • Для команды checkdb добавлен параметр --checkunique (работающий только с --amcheck), позволяющий проверять ограничения уникальности в ходе проверки индексов. Для соответствующей проверки в базе данных должно быть установлено расширение amcheck подходящей версии. За подробностями обратитесь к документации amcheck.

    • Устранена проблема, которая могла возникнуть, когда исходная БД не находилась на линии времени 1 и целевая не отставала от исходной: probackup проверял целостность истории линии времени catchup и выводил сообщение об ошибке «Destination is not in source timeline history» (Целевого состояния нет в истории исходной линии времени).

    • Устранена проблема, связанная с поведением catchup в режимах DELTA и PTRACK. Она могла проявляться, когда использовалось удалённое подключение через SSH и в параметрах --destination-pgdata и --source-pgdata задавался одинаковый путь, и вызывала повреждение исходного экземпляра (как минимум удалялись файлы global/pg_control, global/pg_filenode.map и base/*/pg_filenode.map); в результате выводилось сообщение вида «Could not open file "/pgwal/test/global/pg_control" for reading: No such file or directory» (Не удалось открыть для чтения файл "/pgwal/test/global/pg_control": нет такого файла или каталога).

E.16.2. Миграция на версию 12.10.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 или ниже, сделайте полную резервную копию базы данных после обновления.