E.16. Postgres Pro Enterprise 13.9.1

Дата выпуска: 2022-12-15

E.16.1. Обзор

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

  • Добавлен параметр slru_buffers_size_scale, позволяющий управлять размером SLRU-буферов в разделяемой памяти. Обратите внимание, что вследствие этого размер буферов изменился.

  • Улучшена логика сборки мусора в CFS. Теперь процент «мусорных» блоков в файле рассчитывается исходя из размера файла, округлённого до 4 КБ (типичный размер блока в файловых системах), что предотвращает частую дефрагментацию небольших файлов.

  • Добавлена поддержка архитектуры процессоров Эльбрус в операционных системах Альт 9/10 (для e2kv3/e2kv4), Альт 8.2 СП (для e2kv3/e2kv4) и Astra Linux «Ленинград» 8.1 В Альт 10 рекомендуется использовать ядро Linux 5.4.182-mcst-e8c-alt3.22.1 или новее.

  • Устранена проблема, которая в редких случаях могла приводить к краху реплики при физической репликации. Ранее записи WAL с информацией об обновлении и инициализации страниц кучи не содержали pd_multi_base, в результате чего значения xmax могли оказаться некорректными.

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

  • Устранена причина периодического резкого увеличения счётчика checkpoint_req в представлении pg_stat_bgwriter на реплике. Причина заключалась в увеличении счётчика даже при неудачных попытках создать точку перезапуска (а таких попыток могло быть много). Теперь заранее проверяется, что попытка создания точки перезапуска окончится неудачей, и заведомо неудачные попытки не предпринимаются. Следует отметить, что такие попытки не приводили к повышенному потреблению системных ресурсов.

  • Обеспечена совместимость in_memory с автономными транзакциями.

  • В набор пакетов Postgres Pro для Windows добавлен oracle_fdw.

  • Исправлена ошибка в psql, из-за которой метакоманды \du+ и \duS+ ошибочно воспринимались как недопустимые. Эти команды выводят список ролей базы данных, включая системные роли, с разным уровнем детализации и равнозначны командам \dgS+ и \du+S (соответственно), которые обрабатывались правильно и до исправления ошибки.

  • Модуль aqo обновлён до версии 1.5, в которую вошли исправления ошибок и следующие изменения:

    • База знаний aqo теперь сохраняется в отдельных файлах на диске, а не в таблицах Postgres Pro.

    • Расширение aqo сделано перемещаемым.

    • Добавлены функции, позволяющие анализировать качество планирования запросов.

    • Добавлена возможность обучения на частично выполненных запросах, в частности, прерванных по тайм-ауту (см. statement_timeout).

    • Модуль aqo переведён на использование идентификаторов запросов, универсальных для всех расширений. Теперь aqo и pg_stat_statements можно использовать одновременно, с одними и теми же идентификаторами.

    • Модуль aqo теперь может оптимизировать запросы с временными таблицами.

    • Устранён ряд утечек памяти.

    • Добавлена альфа-версия новой функциональности: поиск по соседям (по умолчанию отключена). Она позволяет расширить область применения знаний на вновь поступающие запросы с отличающейся структурой.

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

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

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

  • В расширение multimaster внесён ряд улучшений и исправлений. Основные изменения перечислены ниже:

    • Реализован механизм предотвращения взаимоблокировок, управляемый параметром multimaster.deadlock_prevention . Это позволяет избежать ситуаций, в которых из-за медленного разрешения наступивших взаимоблокировок отработка транзакций будет занимать существенно большее время.

    • Скорректированы состояния применяющих процессов multimaster, выводимые в представлении pg_stat_activity. Теперь после применения транзакций состояние процесса меняется на idle, а не active.

    • Исправлена ошибка, которая могла приводить к изоляции всех узлов кластера multimaster после удаления любого узла и добавления нового узла в кластер.

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

    • Оптимизировано резервное копирование файлов *.cfm путём усечения конечных нулей.

    • Устранена проблема в команде checkdb --amcheck, которая ранее не могла обрабатывать базы, содержащие секционированные индексы.

    • Устранена ошибка, возникавшая на ведомом сервере в случае, если на ведущем работал агент pg_probackup другой версии.

  • Модуль pgpro_pwr обновлён до версии 4.1, главным новшеством которой стало добавление статистики JIT в отчёты.

  • Расширение pgpro_scheduler обновлено до версии 2.8. В этой версии добавлена функция schedule.timetable(), возвращающая все задания (многократно повторяемые и одноразовые), которые должны выполниться в заданном интервале времени.

  • Модуль pgpro_stats обновлён до версии 1.4.3, в которой, в частности:

    • Исправлена ошибка, которая могла вызвать крах сервера во время нормализации текста запроса при использовании расширенного протокола.

E.16.2. Миграция на версию 13.9.1

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

Если вы хотите сохранить существующее представление карт видимости в pageinspect при миграции на текущую основную версию Postgres Pro Enterprise с использованием pg_upgrade, выполните команду VACUUM, прежде чем начинать обновление.

Если вы ранее мигрировали на Postgres Pro Enterprise версии 13.3.1 или ниже, обязательно перестройте индексы GIN, выполнив команду REINDEX.

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

Если в вашей инсталляции Postgres Pro Enterprise 13.2.1 имеются сжатые табличные пространства, созданные без явного выбора алгоритма pglz, произведите обновление следующим образом. До обновления выгрузите полный дамп, используя pg_dumpall. Обновите Postgres Pro Enterprise, пересоздайте кластер баз данных и восстановите все данные из дампа. Затем вы можете создать табличные пространства CFS по прежней схеме.

Если вы уже обновили инсталляцию Postgres Pro Enterprise 13.2.1 с табличными пространствами CFS и потеряли доступ к сжатым данным, обратитесь к службе поддержки.

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