Greenplum 6.22: краткий обзор осенних обновлений

обучение Greenplum курсы примеры для разработчиков и администраторов, Greenplum для инженеров данных, Greenplum дата-инженер курсы обучение, Greenplum Arenadata DB курсы примеры обучение, обучение большим данным, Школа Больших Данных Учебный Центр Коммерсант

9 сентября 2022 года VMware Tanzu выпустили Greenplum 6.22. А спустя месяц, 7 октября вышел апгрейд этого релиза с исправлением ошибок. Разбираем, что нового в этих выпусках: полезные функции, улучшения и исправления ошибок, особенно важные для администратора кластера и дата-инженера.

Greenplum 6.22.0

Сентябрьское обновление Greenplum 6.22.0 включает следующие функциональные возможности и компоненты:

  • добавлен плагин, который позволяет отслеживать кластеры Greenplum Text через Greenplum Command Center. Что такое Tanzu Greenplum Text, мы рассматривали здесь.
  • добавлено расширение plpython3u для поддержки разработки функций Python 3.9 с помощью PL/Python;
  • в пакет Data Science для Python добавлены модули поддержки решулярных выражений, а также обновлены дополнения lxml, nltk, tensorflow, tensorflow-gpu и keras для устранения уязвимостей;
  • улучшена производительность утилиты создания дампов базы данных pg_dump за счет сбора метаданных в одном запросе, что особенно полезно для кластеров с большим количеством таблиц, оптимизированных для добавления (Append Only);
  • добавлено представление gp_suboverflowed_backend, созданное новым расширением gp_subtransaction_overflow, чтобы помочь пользователям запрашивать переполненные серверные части. Пользователи могут использовать информацию об идентификаторах сегмента и процесса, сообщаемую в представлении, для прекращения работы серверных частей, вызывающих нарушение, предотвращая снижение производительности.
  • добавлено расширение gp_pitr для поддержки реализации моментального восстановления. Оно создает новое представление gp_stat_archiver и две новые внутренние пользовательские функции.
  • добавлен новый модуль ip4r, который предоставляет типы данных для операций с IP-адресами IPv4 и IPv6;
  • добавлен новый новый модуль postgresql-hll, который предоставляет типы данных HyperLogLog для баз данных PostgreSQL и Greenplum;
  • обновлено расширение pgcrypto для поддержки шифрования FIPS с помощью параметра конфигурации pgcrypto.fips, о чем мы подробно рассказываем в новой статье.
  • модуль diskquota обновлен до версии 2.0.1, что меняет характер логирования. Если он включен в базе данных с существующими данными, но функция init_table_size_table() не запущена, при запуске кластера Greenplum регистрируется одно сообщение об ошибке. Раньше diskquota регистрировал одну и ту же ошибку многократно, примерно каждые 2 секунды, что ухудшало работу системы монитора журнала.
  • добавлен новый параметр конфигурации сервера, optimizer_enable_replicated_table, который включен по умолчанию и нужен для управления поведением оптимизатора GPORCA, когда он сталкивается с DML-операциями в реплицированных таблицах. Если этот параметр отключен, оптимизатор GPORCA возвращается к планировщику Postgres.
  • обновлен потоковый сервер Greenplum Streaming Server (GPSS) версии 1.8.0, который включает новые функции, изменения и исправления ошибок;
  • протокол s3 теперь поддерживает получение учетных данных аутентификации S3 из файла учетных данных AWS по умолчанию, (~/.aws/credentials);
  • утилита gpfdist и файловый протокол теперь поддерживают чтение и запись файлов, сжатых с помощью алгоритма сжатия Zstandard;
  • обновлен модуль gp_percentile_agg, чтобы исправить ошибку и создать более эффективные планы для агрегатов упорядоченного набора с искаженными данными;
  • добавлен общедоступный интерфейс f_smgr для операций хранения;
  • улучшена производительность вычисления размера таблицы gpexpand;
  • в модуль PgBouncer добавлена поддержка встроенной аутентификации LDAP между клиентом psql и процессом pgbouncer;
  • внесена поддержка настройки атрибута ldapsearchfilter в файле conf, чтобы предоставить фильтр поиска для использования при аутентификации поиск + привязка;
  • добавлен коннектор VMware Tanzu Greenplum для Apache NiFi версии 1.1.0;
  • улучшена утилита gpmt gp_log_collector – теперь она включает параметр —with-gpbackup для сбора журналов, связанных с операциями резервного копирования и восстановления;
  • обновлены драйверы DataDirect ODBC до версии 7.1.6+7.16.445, чтобы включить последние исправления и больше не требовать принятия отдельного лицензионного соглашения. Также в новой версии устранена проблема совместимости с настраиваемым коннектором .pqx Greenplum Direct Query и шлюзом Microsoft PowerBI. Чтобы это обновление работало, драйвер ODBC и коннектор .pqx также следует обновить в десктопных системах и системах шлюза.

Помимо добавления новых функций и улучшения существующих, в Greenplum 6.22.0 исправлено двойное освобождение буфера во время разрыва потока и устранена проблема, из-за которой запрос CTE, включающий несколько столбцов. Ликвидирован ряд уязвимостей и ошибок из-за которых SELECT и другие операции только для чтения приводили к установке битов подсказок на страницах, генерирующих записи WAL с полными изображениями страниц, что приводило к большой задержке репликации. Для этого Greenplum теперь расширяет использование параметра конфигурации сервера wait_for_replication_threshold.

Также устранена проблема, из-за которой gpupgrade выполнялся медленно из-за неэффективных и повторяющихся запросов метаданных утилиты pg_dump. Исправлено переполнение подтранзакций, вызывающее проблемы с производительностью — теперь его можно легко идентифицировать и устранить. В Greenplum 6.22 большая задержка между основным и зеркальным сервером во время добавочного восстановления уже не приводит к остановке транзакций на основном сервере. Устранена проблема, из-за которой не удалось создать bitmap-индекс для столбца и использовать его для сканирования с условием массива NULL для этого столбца.

Решена проблема, из-за которой текущая кодировка клиента (client_encoding) применялась как значение по умолчанию, вызывая проблему на сервере. Проблема устранена путем использования кодировки сервера GPDB по умолчанию, будь то QD или QE, что делает кодировку внешних таблиц по умолчанию такой же, как кодировка базы данных. Исправлена ошибка, из-за которой запрос к реплицированной таблице, созданной с помощью INSERT INTO SELECT FROM другой реплицированной таблицы, возвращал неверные результаты при создании последовательности.

Исправлена ​​возможная утечка памяти при использовании удаления для уничтожения объектов, выделенных new[] и сбои времени запроса, вызванные экранированными символами в URL-адресах S3. Также повышена производительность за счет добавления GUC для управления выводом транзакций SQL-запросов suboverflow. Решена проблема, из-за которой окончательный план запроса с наборами группировки по отдельным квалифицированным агрегатам включал ненужные узлы сортировки.

Исправлен ряд ошибок в части управления потоком данных. В частности, удалены ненужные проверки нулевого указателя в gpcloud, заменены escape-символы пробелами в URL-адресах протокола s3, чтобы предотвратить сбои времени запроса и устранена проблема с аутентификацией S3 по протоколу s3 путем добавления поддержки получения учетных данных из файла учетных данных AWS по умолчанию.

В части управления кластером устранена проблема, из-за которой gpinitsystem могла выдать ошибку при запуске с параметром отладки (-D). Решена проблема, из-за которой gpexpand повторял ошибку Port <port-number>, используемую несколько раз на хосте, если сегменты не были в своих предпочтительных ролях. Теперь gpexpand правильно назначает номера портов в этом случае, но генерирует предупреждающее сообщение, указывающее, что сегменты не работают в своих предпочтительных ролях.

Исправление проблем в релизе 6.22.1

Несмотря на тщательное тестирование внесенных изменений, каждый свежий релиз выходит с какими-то ошибками, которые не удалось отловить на этапе подготовки к выпуску. Обычно их исправляют выходом свежего обновления. К примеру, вышедший спустя месяц релиз Greenplum 6.22.1 включает исправления следующих серверных проблем:

  • решена проблема, из-за которой запросы могли зависать при использовании прокси-сервера межсоединения, если сетевые проблемы возникали во время обычных операций разрыва соединения TCP. Введен механизм тайм-аута, гарантирующий, что отправитель закроет одноранговое соединение с получателем.
  • исправлена проблема, из-за которой журналы от ic_proxy не учитывали текущую настройку параметра конфигурации gp_log_interconnect. Значение параметра теперь учитывается в механизме логирования ic_proxy.
  • устранена проблема, из-за которой зеркалу не удавалось начать архивирование WAL, если зеркало было настроено с параметром archive_mode=on;
  • оптимизировано использование ресурсов при проверке узлов плана SQL-запроса, принадлежащего другим слайсам. Чтобы избежать инициализации ненужных структур, Greenplum теперь устраняет чужие узлы перед выполнением для входной базы данных.
  • Команда psql \d+ теперь показывает правильную информацию индекса для вспомогательных таблиц только для добавления;
  • Устранена проблема, из-за которой Greenplum возвращала неправильный результат или автоматически выдавала ошибку, когда подплан SQL-запроса содержал SharedScan, а родительский план включал движение, путем исправления обнаружения взаимодействия между срайсами для подпланов.
  • Устранен сбой, который мог произойти из-за того, что Greenplum неправильно разрешил REINDEX TABLE для многораздельной таблицы из функции PL/SQL. Поскольку REINDEX TABLE для многораздельной таблицы расширяет таблицу и запускает новую транзакцию для переиндексации каждой таблицы, операция не может быть отменена и может привести к сбою при вызове в PL/SQL. Код был изменен, чтобы предотвратить выполнение этой операции внутри функции.

Также отметим, какие ошибки в обработке запросов были устранены:

  • ошибка запроса, которая могла возникнуть, если предикат с функцией, возвращающей набор, был нажат в тех случаях, когда контекст не мог принять набор из-за сброса предиката;
  • потребление большого объема памяти, когда оптимизатор GPORCA планировал определенные запросы, генерирующих динамическое сканирование bitmap;
  • улучшена генерация планов запросов оптимизатором GPORCA, который раньше не мог выполнять агрегатные функции на реплицированных слайсах. Результаты всегда транслировались или собирались в одном сегменте, чтобы обеспечить согласованность и правильность результатов. Теперь возможно безопасное выполнение часто используемых агрегатных функций, не зависящих от порядка данных: сумма, среднее, количество, минимум и максимум. Когда агрегатные функции чувствительны к порядку данных (например, array_agg и UDF-функции), эта оптимизация не применима.
  • устранена проблема с производительностью, из-за которой операции внешнего соединения выполняли ненужное перераспределение данных для создания спецификации распределения хэшей из внутреннего отношения. Теперь вычисляется комбинированная спецификация хэша для операций внешнего соединения из обоих отношений.

Также исправлена пара ошибок, которые могут возникнуть при управлении кластером. В частности, когда утилита gpcheckcat неправильно помечала объекты привилегий по умолчанию как имеющие отсутствующие зависимости. И устранена проблема, из-за которой продвижение gpactivatestandby могло завершиться ошибкой, поскольку процесс не ожидал завершения процесса walreceiver достаточно долго. Проблема устранена путем синхронизации значения тайм-аута резервного продвижения со значением тайм-аута зеркального продвижения. О выпуске ноябрьского обновления GP 6.22.2 читайте в нашей новой статье.

Освойте администрирование и эксплуатацию Greenplum с Arenadata DB для эффективного хранения и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://docs.vmware.com/en/VMware-Tanzu-Greenplum/6/greenplum-database/GUID-relnotes-release-notes.html
Поиск по сайту