Изоляция группы рабочей нагрузки в Azure Synapse Analytics

В этой статье объясняется, как можно использовать группы рабочей нагрузки для настройки изоляции рабочей нагрузки, хранения ресурсов и применения правил среды выполнения для выполнения запросов.

Группы рабочей нагрузки

Группы рабочей нагрузки являются контейнерами для набора запросов и служат основой для настройки управления рабочими нагрузками в системе, включая изоляцию рабочей нагрузки. Группы рабочей нагрузки создаются с помощью синтаксиса CREATE WORKLOAD GROUP. Управлять загрузкой данных и пользовательскими запросами можно с помощью простой конфигурации управления рабочей нагрузкой. Например, группа рабочей нагрузки с именем wgDataLoads будет определять аспекты рабочей нагрузки для данных, загружаемых в систему. Кроме того, группа рабочей нагрузки с именем wgUserQueries определяет аспекты рабочей нагрузки для пользователей, выполняющих запросы для чтения данных из системы.

В следующих разделах будет показано, как группы рабочей нагрузки позволяют настраивать изоляцию и автономность, запрашивать определение ресурса и соблюдать правила выполнения.

Управление ресурсами

Группы рабочей нагрузки управляют памятью и ресурсами ЦП. Они не управляют дисковыми и сетевыми операциями ввода-вывода, а также tempdb. Управление ресурсами для памяти и ЦП выглядит следующим образом:

Память регулируется на уровне запросов и удерживается в течение всего запроса. Дополнительные сведения о настройке объема памяти для каждого запроса см. в разделе Ресурсы для определения запроса. Параметр MIN_PERCENTAGE_RESOURCE группы рабочей нагрузки выделяет память для исключительно этой группы. Параметр CAP_PERCENTAGE_RESOURCE группы рабочей нагрузки является жестким ограничением памяти, которую может использовать эта группа.

Ресурсы ЦП определяются на уровне группы рабочей нагрузки и используются совместно всеми запросами в этой группе. Ресурсы ЦП являются гибкими по сравнению с памятью, которая выделяется запросу на весь период его выполнения. Объем выделенных ресурсов ЦП может меняться, и все группы рабочей нагрузки могут потреблять неиспользуемые ресурсы ЦП. Это означает, что загрузка ЦП может превысить параметр CAP_PERCENTAGE_RESOURCE для группы рабочей нагрузки. Это также означает, что параметр MIN_PERCENTAGE_RESOURCE для группы рабочей нагрузки не означает жесткое резервирование (как в случае с памятью). Когда ресурсы ЦП находятся в режиме состязания, их использование будет соответствовать определению CAP_PERCENTAGE_RESOURCE для групп рабочей нагрузки.

Изоляция рабочей нагрузки

Изоляция рабочей нагрузки означает, что ресурсы зарезервированы исключительно для группы рабочей нагрузки. Изоляция рабочей нагрузки достигается путем установки для параметра MIN_PERCENTAGE_RESOURCE значения больше нуля в синтаксисе CREATE WORKLOAD GROUP. Для рабочих нагрузок непрерывного выполнения, которые должны соответствовать жестким требованиям соглашений об уровне обслуживания, изоляция гарантирует, что ресурсы всегда будут доступны для группы рабочих нагрузок.

Настройка изоляции рабочей нагрузки неявно определяет гарантированный уровень параллелизма. Например, если для группы рабочей нагрузки CAP_PERCENTAGE_RESOURCE задано значение 30 %, а для REQUEST_MIN_RESOURCE_GRANT_PERCENT — значение 2 %, для группы гарантирован параллелизм 15. Уровень параллелизма гарантирован, так как 15–2 % слотов ресурсов зарезервированы в группе рабочей нагрузки на постоянной основе (независимо от того, как настроен параметр REQUEST_MAX_RESOURCE_GRANT_PERCENT). Если значение REQUEST_MAX_RESOURCE_GRANT_PERCENT больше REQUEST_MIN_RESOURCE_GRANT_PERCENT, а CAP_PERCENTAGE_RESOURCE — больше MIN_PERCENTAGE_RESOURCE, вы можете добавить для запроса дополнительные ресурсы (на основе его доступности). Если значения REQUEST_MAX_RESOURCE_GRANT_PERCENT и REQUEST_MIN_RESOURCE_GRANT_PERCENT равны, а CAP_PERCENTAGE_RESOURCE — больше MIN_PERCENTAGE_RESOURCE, возможен дополнительный параллелизм. Рассмотрим приведенный ниже метод для определения гарантированного параллелизма.

[Гарантированный параллелизм] = [MIN_PERCENTAGE_RESOURCE]/[REQUEST_MIN_RESOURCE_GRANT_PERCENT]

Примечание

Для min_percentage_resource существуют определенные минимально приемлемые значения уровня обслуживания. Дополнительные сведения см. в разделе об эффективных значениях.

В случае отсутствия изоляции рабочей нагрузки запросы работают в общем пуле ресурсов. Доступ к ресурсам в общем пуле не гарантирован и назначается в зависимости от степени важности.

Настройка изоляции рабочей нагрузки должна выполняться с осторожностью, так как ресурсы распределяются по группе рабочей нагрузки, даже если в группе рабочей нагрузки нет активных запросов. Чрезмерная настройка изоляции может привести к снижению общей загрузки системы.

Пользователи должны избегать решения для управления рабочей нагрузкой, которое настраивает 100 % изоляцию рабочей нагрузки: 100 % изоляция достигается, когда сумма min_percentage_resource, настроенная для всех групп рабочей нагрузки, равна 100 %. Этот тип конфигурации является чрезмерно строгим и жестким, оставляя мало места для запросов ресурсов, которые случайно неправильно классифицируются. Существует возможность, позволяющая выполнять один запрос из групп рабочей нагрузки, не настроенных для изоляции. Ресурсы, выделенные на этот запрос, будут отображаться как ноль в динамическом административном представлении системы и занимать уровень ресурсов smallrc, предоставленных из системных зарезервированных ресурсов.

Примечание

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

Автономность рабочей нагрузки

Автономность рабочей нагрузки означает ограничение объема ресурсов, которые может использовать группа рабочей нагрузки. Автономность рабочей нагрузки достигается путем установки для параметра CAP_PERCENTAGE_RESOURCE значения меньше 100 в синтаксической конструкции CREATE WORKLOAD GROUP. Рассмотрим сценарий, в котором пользователям требуется доступ на чтение к системе, чтобы они могли выполнять анализ "что-если" с помощью нерегламентированных запросов. Эти типы запросов могут оказать негативное влияние на другие рабочие нагрузки, выполняемые в системе. Настройка автономности гарантирует, что количество ресурсов ограничено.

Настройка автономности рабочей нагрузки неявно определяет максимальный уровень параллелизма. Если для CAP_PERCENTAGE_RESOURCE задано значение 60 %, а для REQUEST_MIN_RESOURCE_GRANT_PERCENT значение 1 %, для группы рабочей нагрузки разрешен параллелизм до уровня не более 60. Рассмотрим приведенный ниже метод, чтобы определить максимальную степень параллелизма:

[Максимальный параллелизм] = [CAP_PERCENTAGE_RESOURCE] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT]

Примечание

Эффективное значение параметра CAP_PERCENTAGE_RESOURCE группы рабочей нагрузки не достигает 100 %, когда создаются группы рабочей нагрузки с параметром MIN_PERCENTAGE_RESOURCE на уровне больше нуля. Действующие значения времени выполнения см. в статье sys.dm_workload_management_workload_groups_stats.

Ресурсы для определения запроса

Группы рабочей нагрузки предоставляют механизм для определения минимального и максимального объема ресурсов, выделяемых для каждого запроса с помощью параметров REQUEST_MIN_RESOURCE_GRANT_PERCENT и REQUEST_MAX_RESOURCE_GRANT_PERCENT в синтаксисе CREATE WORKLOAD GROUP. В этом случае в качестве ресурса используется память. Управление ресурсами ЦП рассматривается в разделе Управление ресурсами.

Примечание

REQUEST_MAX_RESOURCE_GRANT_PERCENT — это необязательный параметр, по умолчанию имеющий то же значение, что и параметр REQUEST_MIN_RESOURCE_GRANT_PERCENT.

Как и при выборе класса ресурсов, настройка параметра REQUEST_MIN_RESOURCE_GRANT_PERCENT задает значение для ресурсов, используемых запросом. Объем ресурсов, указанных заданным значением, гарантированно выделен для запроса, прежде чем он начнет выполнение. Если вы клиент, выполняющий миграцию из классов ресурсов в группы рабочей нагрузки, ознакомьтесь с этой статьей, чтобы сопоставить классы ресурсов с группами рабочей нагрузки в качестве отправной точки.

При настройке параметра REQUEST_MAX_RESOURCE_GRANT_PERCENT значение больше REQUEST_MIN_RESOURCE_GRANT_PERCENT позволяет системе выделить больше ресурсов на запрос. При планировании запроса система определяет фактическое выделение ресурсов для запроса, со значением от REQUEST_MIN_RESOURCE_GRANT_PERCENT до REQUEST_MAX_RESOURCE_GRANT_PERCENT, в зависимости от доступности ресурсов в общем пуле и текущей нагрузки в системе. Ресурсы должны существовать в общем пуле ресурсов при планировании запроса.

Примечание

Параметры REQUEST_MIN_RESOURCE_GRANT_PERCENT и REQUEST_MAX_RESOURCE_GRANT_PERCENT имеют действующие значения, зависящие от действующих значений параметров MIN_PERCENTAGE_RESOURCE и CAP_PERCENTAGE_RESOURCE. Действующие значения времени выполнения см. в статье sys.dm_workload_management_workload_groups_stats.

Правила выполнения

В системах с нерегламентированной системой отчетности клиенты могут случайно выполнять неконтролируемые запросы, которые серьезно влияют на производительность других пользователей. Системные администраторы вынуждены тратить время на прерывание запросов, чтобы освободить системные ресурсы. Группы рабочей нагрузки предоставляют возможность настройки правила времени ожидания выполнения запроса для отмены запросов, превышающих указанное значение. Правило настраивается с помощью параметра QUERY_EXECUTION_TIMEOUT_SEC в синтаксической конструкции CREATE WORKLOAD GROUP.

Ресурсы общего пула

Ресурсы общего пула — это ресурсы, которые не настроены для изоляции. Группы рабочей нагрузки с параметром MIN_PERCENTAGE_RESOURCE, для которых задано нулевое значение, используют ресурсы в общем пуле для выполнения запросов. Группы рабочей нагрузки со значением параметра CAP_PERCENTAGE_RESOURCE больше значения параметра MIN_PERCENTAGE_RESOURCE также используют общие ресурсы. Объем ресурсов, доступных в общем пуле, вычисляется следующим образом.

[Общий пул] = 100 — [сумма MIN_PERCENTAGE_RESOURCE во всех группах рабочей нагрузки]

Доступ к ресурсам в общем пуле размещается по уровню важности. Запросы с одинаковым уровнем важности будут получать доступ к ресурсам общего пула в порядке поступления.

Дальнейшие действия