E.4. Postgres Pro Standard 12.19.1
Дата выпуска: 2024-05-20
E.4.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.4.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 или ниже, сделайте полную резервную копию базы данных после обновления.
E.4. Postgres Pro Standard 12.19.1
Release Date: 2024-05-20
E.4.1. Overview
This release is based on PostgreSQL 12.19 and Postgres Pro Standard 12.18.2. All improvements inherited from PostgreSQL 12.19 are listed in PostgreSQL 12.19 Release Notes. Other major changes and enhancements are as follows:
Disabled the system startup timeout by setting the
TimeoutSecparameter to 0 in systemd. Previously, big databases could fail to start within the specified timeout.Reduced logging level during a specified restore point creation at a checkpoint timeout for inactive bases only. It allows removing excessive log messages.
Fixed a bug resulting in error “cache lookup failed for collation 128”. Now, for the additional
INCLUDEindex columns, collation is ignored.Fixed two planner issues. An expression duplication issue previously caused underestimation of node selectivity and cost in some cases, which could lead to a choice of a suboptimal plan. Another issue — the selectivity overestimation for an
AppendOrnode was caused by its subnode selectivity overestimation and led to the plan cost overestimation.Ended support for Astra Linux Orel 2.12.
Ended support for Astra Linux Smolensk 1.6.
Ended support for Red OS Murom 7.2.
Upgraded mamonsu to version 3.5.8, which provides optimizations and bugfixes. Notable changes are as follows:
Added support for the Zabbix 6.4 API: handling of deprecated parameters for authentication requests.
Removed caching of the
pgsql.connections[max_connections]metric.Updated the default log rotation rules.
Prepared for support of Python 3.12.
Changed metric names of the pg_locks plugin. Be aware that the changes could break custom user-defined triggers and processing functions that use the
item.nameparameter.Fixed type mismatch for pgpro_stats and pg_wait_sampling.
Fixed privileges for the
mamonsurole created bybootstrap.
Upgraded orafce to version 4.10.0.
Upgraded pg_probackup to version 2.8.0, which provides new features, optimizations and bug fixes. Notable changes are as follows:
Added a possibility to limit the rate of disk writes using the option
--write-rate-limit=bitrate (Mbps, Gbps).Decreased the memory consumption when restoring long sequences of increments twice on average.
Added a possibility to validate only a WAL archive.
Extended the use of the
--dry-runoption for all pg_probackup commands.Made creation of a temporary slot during backups in the STREAM mode the default behavior unless it is specified otherwise.
Changed the default compression algorithm to
zstd. Ifzstdis not supported by the system,lz4has the next priority. The--compressoption now sets the default values for--compress-leveland--compress-algorithm.
Added the
pgv_exists_elemfunction to pg_variables that checks whether an element with a key exists in a general collection.Upgraded pgpro_stats to version 1.7.1, which provides optimizations and bug fixes. Notable changes are as follows:
Added saving non-normalized plans to pgpro_stats for queries where previously no plans were saved.
Fixed an issue that hindered the monitoring when the
pgpro_stats_statementsview contained quite a few rows with the same values ofplanandqueryid, but different values ofplanid. The issue was caused by an error in parsing the plan tree containing aT_Memoisenode.
Upgraded pgpro_pwr to version 4.5.
Fixed an error “ERROR: query failed: ERROR: tablespace "XXXX" does not exist” that could occur when the
pg_repackcommand was trying to reorganize tables in a tablespace whose name started with a digit. The root cause of the issue was that pg_repack expected extra quotes.Added the
--save-fullpageoption to pg_waldump. It allows saving full-page images included in WAL records into a given target directory.
E.4.2. Migration to Version 12.19.1
If you are upgrading from Postgres Pro Standard based on the same PostgreSQL major version, it is enough to install the new version into your current installation directory.
While functions numeric_eq, numeric_ne, numeric_gt, numeric_ge, numeric_lt, and numeric_le are actually leakproof, they were not marked as such in Postgres Pro Standard 12.1.1, which could lead to incorrect query optimization. In particular, it negatively affected query execution if row-level security policy was in use. Version 12.2.1 repairs this issue for new installations by correcting the initial catalog data, but existing installations will still have incorrect markings unless you update pg_proc entries for these functions. You can run pg_upgrade to upgrade your server instance to a version containing the corrected initial data, or manually correct these entries in each database of the installation using the ALTER FUNCTION command. For example:
ALTER FUNCTION pg_catalog.numeric_eq LEAKPROOF
When upgrading from Postgres Pro versions 12.6.1 or lower, rebuild indexes containing at least one included column of type for which the collation was defined in the table.
If you are upgrading from Postgres Pro versions 12.6.2 or lower and take PTRACK backups using pg_probackup, retake a full backup after upgrade.