Anforderungsbeschränkungsrichtlinie
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer
Die Anforderungsbeschränkungsrichtlinie einer Workloadgruppe ermöglicht das Einschränken der von der Anforderung während der Ausführung verwendeten Ressourcen.
Das Richtlinienobjekt
Jeder Grenzwert besteht aus:
- Ein typierter
Value
– der Wert des Grenzwerts. -
IsRelaxable
- ein boolescher Wert, der definiert, ob der Grenzwert vom Aufrufer entspannt werden kann, als Teil der Anforderungseigenschaften der Anforderung.
Die folgenden Grenzwerte sind konfigurierbar:
Eigentum | Art | Beschreibung | Unterstützte Werte | Übereinstimmende Clientanforderungseigenschaft |
---|---|---|---|---|
DataScope | string |
Der Datenbereich der Abfrage. Dieser Wert bestimmt, ob die Abfrage für alle Daten oder nur für den heißen Cache gilt. |
All , HotCache oder null |
query_datascope |
MaxMemoryPerQueryPerNode | long |
Die maximale Speichermenge (in Byte), die eine Abfrage zuordnen kann. | [1 , 50% des gesamten RAM-eines einzelnen Knotens ] |
max_memory_consumption_per_query_per_node |
MaxMemoryPerIterator | long |
Die maximale Speichermenge (in Byte), die ein Abfrageoperator zuordnen kann. | [1 , Min(32212254720 , 50% des gesamten RAM-)] |
maxmemoryconsumptionperiterator |
MaxFanoutThreadsPercentage | int |
Der Prozentsatz der Threads auf jedem Knoten, um die Abfrageausführung auszufächern. Bei Festlegung auf 100%weist der Cluster allen CPUs auf jedem Knoten zu. Beispielsweise 16 CPUs auf einem Cluster, der auf Azure D14_v2-Knoten bereitgestellt wird. | [1 , 100 ] |
query_fanout_threads_percent |
MaxFanoutNodesPercentage | int |
Der Prozentsatz der Knoten auf dem Cluster, um die Abfrageausführung auszufächern. Funktionen auf ähnliche Weise wie MaxFanoutThreadsPercentage . |
[1 , 100 ] |
query_fanout_nodes_percent |
MaxResultRecords | long |
Die maximale Anzahl von Datensätzen, die eine Anforderung an den Aufrufer zurückgeben darf, darüber hinaus werden die Ergebnisse abgeschnitten. Der Abkürzungsgrenzwert wirkt sich auf das Endergebnis der Abfrage aus, wie sie an den Client übermittelt wird. Der Abkürzungsgrenzwert gilt jedoch nicht für zwischengeschaltete Ergebnisse von Unterabfragen, z. B. solche, die sich aus clusterübergreifenden Verweisen ergeben. | [1 , 9223372036854775807 ] |
truncationmaxrecords |
MaxResultBytes | long |
Die maximale Datengröße (in Byte) kann eine Anforderung an den Aufrufer zurückgeben, über die die Ergebnisse abgeschnitten werden. Der Abkürzungsgrenzwert wirkt sich auf das Endergebnis der Abfrage aus, wie sie an den Client übermittelt wird. Der Abkürzungsgrenzwert gilt jedoch nicht für zwischengeschaltete Ergebnisse von Unterabfragen, z. B. solche, die sich aus clusterübergreifenden Verweisen ergeben. | [1 , 9223372036854775807 ] |
truncationmaxsize |
MaxExecutionTime | timespan |
Die maximale Dauer einer Anforderung. Hinweise: 1) Dies kann verwendet werden, um mehr Grenzwerte über die Standard- Grenzwerte für die Ausführungszeitzu platzieren, aber nicht zu erweitern. 2) Die Timeoutverarbeitung liegt nicht bei der Auflösung von Sekunden, sondern darauf ausgelegt, dass eine Abfrage für Minutennicht ausgeführt wird. 3) Die Zeit, die zum Lesen der Nutzlast beim Client benötigt wird, wird nicht als Teil des Timeouts behandelt. Es hängt davon ab, wie schnell der Aufrufer die Daten aus dem Datenstrom abruft. 4) Die Gesamtausführungszeit kann den konfigurierten Wert überschreiten, wenn die Ausführung der Ausführung länger dauert. |
[00:00:00 , 01:00:00 ] |
servertimeout |
Eigentum | Art | Beschreibung | Unterstützte Werte | Übereinstimmende Clientanforderungseigenschaft |
---|---|---|---|---|
DataScope | string |
Der Datenbereich der Abfrage. Dieser Wert bestimmt, ob die Abfrage für alle Daten oder nur für den heißen Cache gilt. |
All , HotCache oder null |
query_datascope |
MaxMemoryPerQueryPerNode | long |
Die maximale Speichermenge (in Byte), die eine Abfrage zuordnen kann. | [1 , 50% des gesamten RAM-eines einzelnen Knotens ] |
max_memory_consumption_per_query_per_node |
MaxMemoryPerIterator | long |
Die maximale Speichermenge (in Byte), die ein Abfrageoperator zuordnen kann. | [1 , Min(32212254720 , 50% des gesamten RAM-)] |
maxmemoryconsumptionperiterator |
MaxFanoutThreadsPercentage | int |
Der Prozentsatz der Threads auf jedem Knoten, um die Abfrageausführung auszufächern. Bei Festlegung auf 100%weist das Eventhouse alle CPUs auf jedem Knoten zu. Beispielsweise 16 CPUs für ein Ereignishaus, das auf Azure D14_v2-Knoten bereitgestellt wird. | [1 , 100 ] |
query_fanout_threads_percent |
MaxFanoutNodesPercentage | int |
Der Prozentsatz der Knoten im Eventhouse, um die Abfrageausführung auszufächern. Funktionen auf ähnliche Weise wie MaxFanoutThreadsPercentage . |
[1 , 100 ] |
query_fanout_nodes_percent |
MaxResultRecords | long |
Die maximale Anzahl von Datensätzen, die eine Anforderung an den Aufrufer zurückgeben darf, darüber hinaus werden die Ergebnisse abgeschnitten. Der Abkürzungsgrenzwert wirkt sich auf das Endergebnis der Abfrage aus, wie sie an den Client übermittelt wird. Der Abkürzungsgrenzwert gilt jedoch nicht für zwischengeschaltete Ergebnisse von Unterabfragen, z. B. die Ergebnisse aus cross-eventhouse-Verweisen. | [1 , 9223372036854775807 ] |
truncationmaxrecords |
MaxResultBytes | long |
Die maximale Datengröße (in Byte) kann eine Anforderung an den Aufrufer zurückgeben, über die die Ergebnisse abgeschnitten werden. Der Abkürzungsgrenzwert wirkt sich auf das Endergebnis der Abfrage aus, wie sie an den Client übermittelt wird. Der Abkürzungsgrenzwert gilt jedoch nicht für zwischengeschaltete Ergebnisse von Unterabfragen, z. B. Ergebnisse aus cross-eventhouse-Verweisen. | [1 , 9223372036854775807 ] |
truncationmaxsize |
MaxExecutionTime | timespan |
Die maximale Dauer einer Anforderung. Hinweise: 1) Dies kann verwendet werden, um mehr Grenzwerte über die Standard- Grenzwerte für die Ausführungszeitzu platzieren, aber nicht zu erweitern. 2) Die Timeoutverarbeitung liegt nicht bei der Auflösung von Sekunden, sondern darauf ausgelegt, dass eine Abfrage für Minutennicht ausgeführt wird. 3) Die Zeit, die zum Lesen der Nutzlast beim Client benötigt wird, wird nicht als Teil des Timeouts behandelt. Es hängt davon ab, wie schnell der Aufrufer die Daten aus dem Datenstrom abruft. 4) Die Gesamtausführungszeit kann den konfigurierten Wert überschreiten, wenn das Abbrechen der Ausführung länger dauert. |
[00:00:00 , 01:00:00 ] |
servertimeout |
Anmerkung
Ein Grenzwert, der nicht definiert oder als null
definiert ist, wird aus der Anforderungsgrenzrichtlinie der default
Workloadgruppe übernommen.
CPU-Ressourcenauslastung
Abfragen können alle CPU-Ressourcen innerhalb des Clusters verwenden. Wenn mehrere Abfragen gleichzeitig ausgeführt werden, verwendet das System standardmäßig einen fairen Roundrobin-Ansatz zum Verteilen von Ressourcen. Diese Strategie ist optimal, um mit Ad-hoc-Abfragen eine hohe Leistung zu erzielen.
Abfragen können alle CPU-Ressourcen innerhalb des Eventhouse verwenden. Wenn mehrere Abfragen gleichzeitig ausgeführt werden, verwendet das System standardmäßig einen fairen Roundrobin-Ansatz zum Verteilen von Ressourcen. Diese Strategie ist optimal, um mit Ad-hoc-Abfragen eine hohe Leistung zu erzielen.
Es gibt jedoch Szenarien, in denen Sie die CPU-Ressourcen einschränken möchten, die einer bestimmten Abfrage zugeordnet sind. Wenn Sie beispielsweise einen Hintergrundauftrag ausführen, der höhere Latenzen aufnehmen kann. Die Anforderungsbeschränkungsrichtlinie bietet die Flexibilität, einen niedrigeren Prozentsatz von Threads oder Knoten anzugeben, die beim Ausführen von verteilten Unterabfragevorgängen verwendet werden sollen. Die Standardeinstellung ist 100%.
Die default
Workloadgruppe
Die Gruppe default
Workload weist standardmäßig die folgende Richtlinie auf. Diese Richtlinie kann geändert werden.
{
"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"
}
}
Anmerkung
- Grenzwerte in der Gruppe
default
Workload müssen definiert werden und einen Wert ohnenull
aufweisen. - Alle Grenzwerte in der
default
Workloadgruppe habenIsRelaxable
auftrue
festgelegt. - Anforderungsgrenzwerte werden für bestimmte Befehlstypen innerhalb der
default
Workloadgruppe deaktiviert, z. B..export
Befehle und Aufnahme aus Abfragebefehlen wie.set-or-append
und.set-or-replace
. Wenn diese Befehle einer nicht standardmäßigen Workloadgruppe zugewiesen werden, werden die in der Richtlinie angegebenen Anforderungsgrenzwerte anwendbar.
Beispiel
Der folgende JSON-Code stellt ein benutzerdefiniertes Anforderungsbeschränkungsrichtlinienobjekt dar:
{
"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"
}
}