Freigeben über


Anforderungsbeschränkungsrichtlinie

Gilt für: ✅Microsoft FabricAzure 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, HotCacheoder 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, HotCacheoder 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 nulldefiniert 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 haben IsRelaxable auf truefestgelegt.
  • 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"
  }
}