Postgres Professional обновила СУБД Postgres Pro Enterprise
Postgres Professional выпустила минорные обновления для версий СУБД Postgres Pro Enterprise: 16.4.1, 15.8.1, 14.13.1, 13.16.1, 12.20.1.
В рамках релиза для всех версий увеличена производительность поиска сегментов за счёт внедрения новой стратегии, позволяющей быстрее определять последний сегмент.
Устранен ряд проблем и ошибок, среди которых:
- ошибка сегментации, которая могла возникнуть, если соединение со встроенным пулом соединений было сброшено до создания нового сеанса в обслуживающем процессе.
- проблема с замораживанием 64-битных идентификаторов мультитранзакций, которая могла проявляться в ошибках уровня PANIC, таких как «xid XXX does not fit into valid range for base YYY» (xid XXX не попадает в допустимый диапазон для базы YYY) во время автоочистки.
- ошибка, связанная с неоптимальной обработкой pd_prune_xid. Она не приводила к каким-либо существенным проблемам в работе, но вызывала ненужную очистку страниц, которая могла приводить к появлению дополнительных записей WAL.
- проблема, которая могла проявляться в ошибках вида «invalid FSM request size» (недопустимый размер запроса FSM). Код был скорректирован с учётом изменений в структуре страниц кучи, что исключило зависимость от константы, связанной с максимальным свободным пространством на странице кучи, в случаях, где это не применимо.
- ошибка, из-за которой оптимизатор игнорировал столбцы из условий запроса. Ранее при частичном использовании составного индекса количество строк могло завышаться, что приводило к созданию некорректного плана. Ошибка возникала из-за неправильного поведения элементов многостолбцовой статистики.
- ошибка в ANALYZE, которая могла возникать из-за невозможности отобразить системный каталог pg_statistic. Если в базе данных есть индексы со столбцами INCLUDE, после обновления Postgres Pro рекомендуется ещё раз выполнить ANALYZE для этих столбцов, чтобы это исправление применилось.
- некорректное поведение pg_wait_sampling при использовании с расширенным протоколом запросов.
Также решены следующие проблемы в CFS:
- связанные с обработкой структур данных CFS утилитой pg_rewind. Ранее pg_rewind не полностью поддерживала CFS, что могло приводить к повреждению данных.
- проблема, которая могла приводить к сбою рабочего процесса сборки мусора с выводом предупреждения «CFS GC failed to read block 0 of file X at position 0 size 0: Success» Проблема возникала из-за некорректной обработки первого МБ файла данных, содержащего только нулевые страницы. Ранее проблема уже была решена в версии 16.3.1
Обновлены:
- Расширение mchar для устранения ошибки, из-за которой игнорировались управляющие символы при сравнении строк типов данных mchar и mvarchar.
- Расширение pg_filedump – до версии 17.0, в которой были исправлены некоторые ошибки и появились новые возможности. В частности, содержимое метастраниц для индексов GIN и SP-GiST теперь отображается корректно, а также устранена проблема нехватки памяти для кодирования и распаковки.
- Расширение pgpro_rp – до версии 1.1, которая поддерживает группы назначений планов. Администратор баз данных теперь может создавать группы назначений планов для разных ролей, чтобы управлять приоритизацией ресурсов среди большого числа пользователей баз данных.
- Расширение pgpro_sfile – до версии 1.2, в которой добавлена функция sf_md5, вычисляющая MD5-хеш для объекта sfile.
- Приложение pg_probackup – до версии 2.8.3 Enterprise, в которую были включены следующие исправления:
- Исправлена проверка резервных копий для баз данных, содержащих OID более 10^9. Ранее в таких случаях статус проверки мог отображаться некорректно.
- Устранена ошибка, которая могла возникать при запуске pg_probackup от имени пользователя, включённого в группу postgres, если в базе данных использовалась CFS.
Кроме этого, реализована возможность замедлять выполнение транзакций на узле-доноре в расширении multimaster с помощью параметра конфигурации multimaster.tx_delay_on_slow_catchup. Это полезно, когда отстающий узел навёрстывает состояние узла-донора и не может быстро применять изменения.
Для всех версий, кроме 12.20.1:
- Реализовано взаимодействие параметра PASSWORD_GRACE_TIME профиля с атрибутом VALID UNTIL роли. Теперь, если заданы оба, будет выводиться предупреждение об истечении срока действия пароля.
- Предотвращены потенциальные задержки аутентификации из-за блокировок, вызванных тем, что данные о времени последнего входа роли не обновлялись, если для параметра USER_INACTIVE_TIME профиля этой роли было установлено значение UNLIMITED (детали – в разделах 54.40 и 53.39).
- Обновлено расширение pg_proaudit. Включены следующие исправления и усовершенствования:
- Улучшена производительность и добавлен параметр max_rules_count, позволяющий указать максимально допустимое количество правил.
- Устранена ошибка для корректной поддержки имён баз данных, содержащих символы верхнего регистра, при работе функции pg_proaudit_set_rule.
- Добавлена поддержка ОС Альт 11.
Для версий 16.4.1, 15.8.1, 14.13.1:
- Оптимизирована логика очистки страниц. Теперь очистка запускается, когда страница почти заполнена, а не только в зависимости от фактора заполнения. Благодаря этому очистка во время операций UPDATE запускается реже и, следовательно, повышается производительность в часто обновляемых таблицах.
Для версий 16.4.1 и 15.8.1:
- Устранена проблема с параметрами вложенного цикла, из-за которой указание Memoize постоянно очищало кеш. Это исправление ускоряет выполнение запросов.
- Обновлён модуль sr_plan, где улучшена производительность и добавлены новые возможности. Среди основных изменений:
- Добавлен параметр конфигурации sandbox, который позволяет тестировать и анализировать запросы без влияния на работу узлов путём резервирования для них отдельных зон разделяемой памяти.
- Добавлены три параметра конфигурации auto_capturing sr_plan.max_captured_items и sr_plan.max_consts_len, которые позволяют настраивать отслеживание запросов.
- Добавлено представление sr_captured_queries, которое показывает информацию об отслеживаемых в сеансах запросах.
- Добавлена функция sr_captured_clean, которая удаляет все записи из представления sr_captured_queries.
- Параметр конфигурации max переименован в sr_plan.fs_ctr_max.
- Ключ queryid заменён на sql_hash, что отражает новую логику идентификации запросов.
- Кроме этого, обновлены: расширение pgvector до версии 0.7.4; драйвер ODBC до версии 16.00.0005.
Для версии 16.4.1:
- Снижено количество ненужных попыток перепланирования за счёт добавления триггера потребления памяти рабочим процессом, значение которого определяется параметром конфигурации replan_memory_limit, и изменения поведения процесса перепланирования. Теперь такое поведение срабатывает в зависимости от количества обработанных кортежей узлов.
- Улучшена функциональность встроенной отказоустойчивости — включены следующие исправления и усовершенствования:
- Расширение biha обновлено до версии 1.3.
- Оптимизирована логика автоматической синхронизации узлов. Теперь если на узле для параметра конфигурации autorewind установлено значение false и временные линии кластера разошлись, узел перестаёт принимать записи WAL после перехода в состояние NODE_ERROR. Согласно новой логике, для выполнения запросов на узле необходимо удалить biha из shared_preload_libraries и/или выполнить синхронизацию вручную. Результаты синхронизации теперь можно проверить в поле rewind_state файла biha.state.
- Оптимизировано поведение синхронного узла-рефери, работающего в режиме referee_with_wal. Теперь оно зависит от значения параметра конфигурации synchronous_commit.
- Исправлена ошибка, которая могла приводить к непредвиденному понижению статуса узла-лидера до последователя. Это происходило из-за сбоя на всех выполняющих запросы последователях, причиной которого был конфликт между запросом и процессом восстановления. Теперь расширение выводит предупреждение вместо отказа узлов.
- Устранена ошибка сегментации, которая могла возникать в канале управления при попытке удалить узел из кластера.
- Устранены утечки памяти в bihactl.
- Расширение citus обновлено до версии 12.1.5.1, которая поддерживает возможность использовать его со включённым параметром конфигурации enable_group_by_reordering.
- Расширение dbms_lob обновлено до версии 1.2, которая поддерживает чтение и запись блоков до 1 ГБ, раньше размер блока не мог превышать 32 КБ.
- Добавлено расширение hypopg, обеспечивающее поддержку гипотетических индексов в Postgres Pro.
- Обновлено расширение utl_http. Теперь поддерживаются HTTP-методы PUT, UPLOAD, PATCH, HEAD, OPTIONS, DELETE, TRACE, а также любые пользовательские HTTP-методы.
При обновлении Postgres Pro Enterprise на базе той же основной версии PostgreSQL, достаточно просто установить новый выпуск в текущий каталог инсталляции.
Пользователям, которые используют pg_probackup версий 2.8.0 Enterprise или 2.8.1 Enterprise и ранее при их помощи создавали резервные копии, необходимо обновить утилиту до версии 2.8.2 или выше, после этого создать новую полную резервную копию, поскольку резервные копии, созданные на основе версий 2.8.0, 2.8.1, могут быть некорректны. Чтобы проверить, повреждены ли резервные копии, созданные с помощью версий 2.8.0 или 2.8.1, можно использовать версию 2.8.2.
Подробная информация об обновлениях и миграции на новые версии доступна в замечаниях к выпускам: 16.4.1, 15.8.1, 14.13.1, 13.16.1, 12.20.1.