Тюнинг Greenplum 7: 12 конфигураций для администратора и дата-инженера

администрирование Greenplum, настройка Greenplum, тюнинг конфигураций и параметров Greenplum, что настроить в Greenplum, курсы Greenplum, Greenplum для дата-инженера курс обучение, обучение Greenplum, Greenplum инженеров данных и архитекторов СУБД, Greenplum особенности хранения данных, хранение и аналитика больших данных с Greenplum, PostgreSQL в больших данных примеры обучение курсы, Школа Больших Данных Учебный Центр Коммерсант

Что настроить в Greenplum 7, чтобы сделать эту MPP-СУБД еще эффективнее. Обзор наиболее популярных параметров конфигурации и рекомендации по установке их значений.

Ограничения подключений и выполнения SQL-запросов: 6 параметров с перезагрузкой системы

Будучи зрелой системой со множеством настроек, Greenplum предоставляет администратору и дата-инженеру широкие возможности по адаптации этой СУБД к особенностям различных вариантов использования. Сегодня рассмотрим наиболее часто применяемые параметры Greenplum, настройка которых пригодится в эффективном управлении памятью, ресурсами,  производительностью и подключениями к базе данных. Некоторые из этих конфигураций можно изменить на уровне сеанса, а какие-то требуют перезагрузки системы.

Например, перезагрузки требуют следующие параметры:

  • gp_vmem_protect_limit — объем памяти (в МБ), который могут потреблять все процессы PostgreSQL-экземпляра активного сегмента при управлении ресурсами на основе очереди ресурсов или группы ресурсов. Если запрос приведет к превышению этого предела, память не будет выделена, и запрос завершится неудачно.
  • max_connections – максимальное количество одновременных подключений к серверу СУБД. В Greenplum подключения пользователей и клиентов проходят только через экземпляр координатора. Экземпляры сегмента должны позволять использовать в 3–10 раз больше ресурсов, чем координатор. Увеличение этого параметра может привести к тому, что Greenplum запросит больше разделяемой памяти. По умолчанию это значение равно 250 на координатора, 750 на сегментах. При увеличении этого параметра необходимо также увеличить значение конфигурации max_prepared_transactions
  • superuser_reserved_connections — количество слотов подключения, зарезервированных для суперпользователей Greenplum. По умолчанию 10.
  • runaway_detector_activation_percent – процент памяти, которая может потребляться на выполнение запросов до того, как Greenplum прекратит их выполнение, чтобы избежать сбоя из-за чрезмерного потребления ресурсов. Для запросов, управляемых очередями ресурсов или группами ресурсов, этот параметр определяет, когда база данных Greenplum прекращает выполнение запросов в зависимости от объема памяти, используемой запросами. Значение 100 отключает автоматическое завершение запросов в зависимости от процента используемой памяти. По умолчанию этот параметр равен 90%.
  • max_locks_per_transaction – максимальное количество заблокированных объектов в рамках транзакции. Общая таблица блокировок создается с возможностью описания блокировок объектов по формуле max_locks_per_transaction*(max_connections+ max_prepared_transactions), поэтому одновременно можно заблокировать не более этого количества отдельных объектов. Это не жесткое ограничение на количество блокировок, выполняемых одной транзакцией, а скорее максимальное среднее значение. По умолчанию это значение равно 128, и рекомендуется увеличить его при наличии клиентов, которые обращаются к множеству разных таблиц в одной транзакции.
  • max_prepared_transactions – максимальное количество транзакций, которые могут одновременно находиться в подготовленном состоянии. Greenplum использует подготовленные транзакции, чтобы обеспечить целостность данных во всех сегментах. Это значение должно быть не меньше значения max_connections в координаторе. Экземплярам сегмента должно быть присвоено то же значение, что и координатору. По умолчанию равно 250, как на мастере, так и на сегментах.

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

Параметры настройки Greenplum без перезагрузки системы

Чтобы ускорить выполнение SQL-запросов в рамках клиентской сессии, дата-инженер может настроить следующие конфигурации Greenplum:

  • gp_max_plan_size – общий максимальный (несжатый) размер плана выполнения запроса, умноженный на количество операторов движения (срезов) в плане. Если размер плана запроса больше этого значения, запрос отменяется и возвращается ошибка. Значение по умолчанию, равное 0, означает отсутствие ограничений на размер плана. Единица измерения значения этого параметра по умолчанию — кБ, но задавать конфигуацию можно также в МБ и ГБ. Например, значение 200 соответствует 200 КБ, а 1 ГБ соответствует 1024 МБ или 1048576 КБ.
  • gp_max_slices — максимальное количество срезов (частей плана запроса, выполняемых на экземплярах сегмента), которые могут быть созданы SQL-запросом. Если запрос генерирует больше срезов, чем задано в этом параметре, Greenplum возвращает ошибку и не выполняет SQL-запрос. Значение по умолчанию — 0, максимального ограничения нет. Дата-инженеру целесообразно установить это значение, чтобы предупредить падение производительности Greenplum, т.к. выполнение SQL-запроса, генерирующего большое количество срезов, снижает скорость работы системы. Например, SQL-запрос, содержащий операторы UNION или UNION ALL для нескольких сложных представлений, может генерировать большое количество срезов. Можно запустить команду EXPLAIN ANALYZE, о которой мы писали здесь, чтобы просмотреть статистику срезов для SQL-запроса.
  • gp_vmem_idle_resource_timeout – время бездействия сеанса базы данных, пока системные ресурсы (например, общая память), остаются занятыми. При превышении этого значения системные ресурсы освобождаются, но сеанс остается подключенным к базе данных, что позволяет использовать больше одновременных подключений. По умолчанию этот параметр равен 18 секунд.
  • statement_timeout – максимально допустимую продолжительность любого оператора а миллисекундах, по умолчанию равно 0.
  • lock_timeout — количество миллисекунд, после которого выполнение любого SQL-оператора прерывается при попытке получить блокировку таблицы, индекса, строки или другого объекта базы данных. Значение 0 (по умолчанию) отключает мониторинг ожидания блокировки. Ограничение применяется отдельно к каждой попытке получения блокировки, включая явные запросы, такие как LOCK TABLE или SELECT FOR UPDATE, так и к неявно создаваемые блокировки. Если для параметра log_min_error_statement установлено значение ERROR или ниже, Greenplum регистрирует оператор, время ожидания которого истекло. 
  • statement_mem — Объем памяти хоста сегмента для каждого запроса. По умолчанию равно 125 МБ и не может превышать max_statement_mem или предел памяти в очереди ресурсов или группе ресурсов, через которую был отправлен запрос. Если для запроса требуется дополнительная память, используются временные файлы загрузки на диске.

О том, какие еще конфигурации надо настроить, чтобы улучшить работу этой MPP-СУБД, читайте в нашей новой статье. А про инструменты мониторинга системных метрик и SQL-Запросов в Greenplum вы узнаете здесь.

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

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

Источники

  1. https://greenplum.org/commonly-tuned-parameters-in-gp7/
  2. https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/landing-index.html
Поиск по сайту