Политика ограничений запросов
Применимо: ✅Microsoft Fabric✅Azure Data Explorer
Политика ограничения запросов группы рабочей нагрузки позволяет ограничить ресурсы, используемые запросом во время его выполнения.
Объект политики
Каждое ограничение состоит из следующих элементов:
- Типизированный
Value
— значение ограничения. -
IsRelaxable
— логическое значение, определяющее, может ли ограничение быть расслаблено вызывающим, как часть свойств запроса запроса.
Следующие ограничения можно настроить:
Свойство | Тип | Описание | Поддерживаемые значения | Сопоставление свойства запроса клиента |
---|---|---|---|---|
DataScope | string |
Область данных запроса. Это значение определяет, применяется ли запрос ко всем данным или только к горячему кэшу. |
All , HotCache или null |
query_datascope |
MaxMemoryPerQueryPerNode | long |
Максимальный объем памяти (в байтах) может выделить запрос. | [1 , 50% всегоОЗУ одного узла ] |
max_memory_consumption_per_query_per_node |
MaxMemoryPerIterator | long |
Максимальный объем памяти (в байтах) оператора запроса |
[1 , 50% всегоОЗУ одного узла ] |
maxmemoryconsumptionperiterator |
MaxFanoutThreadsPercentage | int |
Процент потоков на каждом узле для развертывания выполнения запроса. Если задано значение 100%, кластер назначает все ЦП на каждом узле. Например, 16 ЦП в кластере, развернутом на узлах Azure D14_v2. | [1 , 100 ] |
query_fanout_threads_percent |
MaxFanoutNodesPercentage | int |
Процент узлов в кластере для развертывания выполнения запроса. Функции аналогично MaxFanoutThreadsPercentage . |
[1 , 100 ] |
query_fanout_nodes_percent |
MaxResultRecords | long |
Максимальное количество записей, которые запрашивается, разрешено возвращать вызывающему объекту, за пределами которого результаты усечены. Ограничение усечения влияет на конечный результат запроса, как доставлено клиенту. Однако ограничение усечения не применяется к промежуточным результатам вложенных запросов, например к тем, которые приводят к перекрестным ссылкам на кластеры. | [1 , 9223372036854775807 ] |
truncationmaxrecords |
MaxResultBytes | long |
Максимальный размер данных (в байтах) может возвращаться вызывающему объекту, за пределами которого результаты усечены. Ограничение усечения влияет на конечный результат запроса, как доставлено клиенту. Однако ограничение усечения не применяется к промежуточным результатам вложенных запросов, например к тем, которые приводят к перекрестным ссылкам на кластеры. | [1 , 9223372036854775807 ] |
truncationmaxsize |
MaxExecutionTime | timespan |
Максимальная длительность запроса. Заметки : 1) Это можно использовать для размещения дополнительных ограничений на по умолчанию ограничений на время выполнения, но не расширяйте их. 2) Обработка времени ожидания не находится в разрешении секунд, а предназначена для предотвращения выполнения запроса в течение минут. 3) Время, затраченное на чтение полезных данных на клиенте, не рассматривается как часть времени ожидания. Это зависит от того, насколько быстро вызывающий объект извлекает данные из потока. 4) Общее время выполнения может превышать настроенное значение, если прерывание выполнения занимает больше времени. |
[00:00:00 , 01:00:00 ] |
servertimeout |
Свойство | Тип | Описание | Поддерживаемые значения | Сопоставление свойства запроса клиента |
---|---|---|---|---|
DataScope | string |
Область данных запроса. Это значение определяет, применяется ли запрос ко всем данным или только к горячему кэшу. |
All , HotCache или null |
query_datascope |
MaxMemoryPerQueryPerNode | long |
Максимальный объем памяти (в байтах) может выделить запрос. | [1 , 50% всегоОЗУ одного узла ] |
max_memory_consumption_per_query_per_node |
MaxMemoryPerIterator | long |
Максимальный объем памяти (в байтах) оператора запроса |
[1 , 50% всегоОЗУ одного узла ] |
maxmemoryconsumptionperiterator |
MaxFanoutThreadsPercentage | int |
Процент потоков на каждом узле для развертывания выполнения запроса. Если задано значение 100%, eventhouse назначает все ЦП на каждом узле. Например, 16 ЦП в хранилище событий, развернутом на узлах D14_v2 Azure. | [1 , 100 ] |
query_fanout_threads_percent |
MaxFanoutNodesPercentage | int |
Процент узлов в eventhouse для развертывания выполнения запроса. Функции аналогично MaxFanoutThreadsPercentage . |
[1 , 100 ] |
query_fanout_nodes_percent |
MaxResultRecords | long |
Максимальное количество записей, которые запрашивается, разрешено возвращать вызывающему объекту, за пределами которого результаты усечены. Ограничение усечения влияет на конечный результат запроса, как доставлено клиенту. Однако ограничение усечения не применяется к промежуточным результатам вложенных запросов, таких как результаты при наличии ссылок между событиями. | [1 , 9223372036854775807 ] |
truncationmaxrecords |
MaxResultBytes | long |
Максимальный размер данных (в байтах) может возвращаться вызывающему объекту, за пределами которого результаты усечены. Ограничение усечения влияет на конечный результат запроса, как доставлено клиенту. Однако ограничение усечения не применяется к промежуточным результатам вложенных запросов, таких как результаты при перекрестном хранилище ссылок. | [1 , 9223372036854775807 ] |
truncationmaxsize |
MaxExecutionTime | timespan |
Максимальная длительность запроса. Заметки : 1) Это можно использовать для размещения дополнительных ограничений на по умолчанию ограничений на время выполнения, но не расширяйте их. 2) Обработка времени ожидания не находится в разрешении секунд, а предназначена для предотвращения выполнения запроса в течение минут. 3) Время, затраченное на чтение полезных данных на клиенте, не рассматривается как часть времени ожидания. Это зависит от того, насколько быстро вызывающий объект извлекает данные из потока. 4) Общее время выполнения может превышать настроенное значение, если прерывание выполнения занимает больше времени. |
[00:00:00 , 01:00:00 ] |
servertimeout |
Заметка
Ограничение, которое не определено или определено как null
, берется из политики ограничений запросов группы default
рабочей нагрузки.
Использование ресурсов ЦП
Запросы могут использовать все ресурсы ЦП в кластере. По умолчанию при одновременном выполнении нескольких запросов система использует справедливый подход к распределению ресурсов. Эта стратегия оптимальна для достижения высокой производительности с помощью нерегламентированных запросов.
Запросы могут использовать все ресурсы ЦП в хранилище событий. По умолчанию при одновременном выполнении нескольких запросов система использует справедливый подход к распределению ресурсов. Эта стратегия оптимальна для достижения высокой производительности с помощью нерегламентированных запросов.
Однако существуют сценарии, в которых может потребоваться ограничить ресурсы ЦП, выделенные для определенного запроса. Например, если вы выполняете фоновое задание, которое может содержать более высокую задержку. Политика ограничений запросов обеспечивает гибкость, чтобы указать более низкий процент потоков или узлов, которые будут использоваться при выполнении распределенных операций вложенных запросов. Значение по умолчанию — 100%.
Группа рабочей нагрузки default
Группа рабочей нагрузки default
имеет следующую политику, определенную по умолчанию. Эту политику можно изменить.
{
"DataScope": {
"IsRelaxable": true,
"Value": "All"
},
"MaxMemoryPerQueryPerNode": {
"IsRelaxable": true,
"Value": < 50% of a single node's total RAM >
},
"MaxMemoryPerIterator": {
"IsRelaxable": true,
"Value": 5368709120
},
"MaxFanoutThreadsPercentage": {
"IsRelaxable": true,
"Value": 100
},
"MaxFanoutNodesPercentage": {
"IsRelaxable": true,
"Value": 100
},
"MaxResultRecords": {
"IsRelaxable": true,
"Value": 500000
},
"MaxResultBytes": {
"IsRelaxable": true,
"Value": 67108864
},
"MaxExecutiontime": {
"IsRelaxable": true,
"Value": "00:04:00"
}
}
Заметка
- Ограничения в группе рабочих нагрузок
default
должны быть определены и имеют значение, отличное отnull
. - Все ограничения в группе рабочих нагрузок
default
имеют значениеIsRelaxable
дляtrue
. - Ограничения запросов отключены для определенных типов команд в группе рабочей нагрузки
default
, например команды.export
и прием из команд запросов, таких как.set-or-append
и.set-or-replace
. Если эти команды назначены группе недефакторной рабочей нагрузки, ограничения запросов, указанные в политике, становятся применимыми.
Пример
Следующий код JSON представляет объект политики ограничения пользовательских запросов:
{
"DataScope": {
"IsRelaxable": true,
"Value": "HotCache"
},
"MaxMemoryPerQueryPerNode": {
"IsRelaxable": true,
"Value": 2684354560
},
"MaxMemoryPerIterator": {
"IsRelaxable": true,
"Value": 2684354560
},
"MaxFanoutThreadsPercentage": {
"IsRelaxable": true,
"Value": 50
},
"MaxFanoutNodesPercentage": {
"IsRelaxable": true,
"Value": 50
},
"MaxResultRecords": {
"IsRelaxable": true,
"Value": 1000
},
"MaxResultBytes": {
"IsRelaxable": true,
"Value": 33554432
},
"MaxExecutiontime": {
"IsRelaxable": true,
"Value": "00:01:00"
}
}