Изоляция группы рабочей нагрузки 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. Для рабочих нагрузок непрерывного выполнения, которые должны соответствовать жестким соглашениям об уровне обслуживания, изоляция гарантирует, что ресурсы всегда доступны для группы рабочих нагрузок.
Настройка изоляции рабочей нагрузки неявно определяет гарантированный уровень параллелизма. Например, группе рабочих нагрузок с MIN_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%. Этот тип конфигурации является чрезмерно строгим и жестким, оставляя мало места для запросов ресурсов, которые случайно классифицируются неправильно. Существует положение, позволяющее выполнить один запрос из групп рабочих нагрузок, не предназначенных для изоляции. Ресурсы, выделенные этому запросу, будут отображаться в виде нуля в динамических административных представлениях систем и заимствуют небольшой уровень предоставления ресурсов из системных зарезервированных ресурсов.
Примечание.
Чтобы обеспечить оптимальное использование ресурсов, рассмотрите систему управления рабочими нагрузками, которая обеспечивает некоторую степень изоляции для соответствия соглашениям об уровне обслуживания и обеспечивает совместное использование общих ресурсов, которые используются в зависимости от важности рабочей нагрузки.
Сдерживание рабочей нагрузки
Управление рабочей нагрузкой относится к ограничению объема ресурсов, которые может использовать группа рабочих нагрузок. Ограничение рабочей нагрузки достигается путем настройки параметра 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
во всех группах рабочих нагрузок]
Доступ к ресурсам в общем пуле выделяется на основании важности. Запросы с тем же уровнем важности будут получать доступ к ресурсам общего пула по принципу первым пришел/первым ушел.