Zásady limitů žádostí

Zásady omezení požadavků skupiny úloh umožňují omezit prostředky používané požadavkem během jeho provádění.

Objekt zásad

Každý limit se skládá z:

  • Typovaný Value – hodnota limitu.
  • IsRelaxable – logická hodnota, která definuje, jestli může volající limit uvolnit jako součást vlastností požadavku.

Konfigurovatelná jsou následující omezení:

Vlastnost Typ Description Podporované hodnoty Odpovídající vlastnost požadavku klienta
DataScope string Obor dat dotazu. Tato hodnota určuje, jestli se dotaz vztahuje na všechna data, nebo jenom na horkou mezipaměť. All, HotCachenebo null query_datascope
MaxMemoryPerQueryPerNode long Maximální velikost paměti (v bajtech), kterou může dotaz přidělit. [1, 50 % celkové paměti RAM jednoho uzlu] max_memory_consumption_per_query_per_node
MaxMemoryPerIterator long Maximální velikost paměti (v bajtech), kterou může operátor dotazu přidělit. [1, 50 % celkové paměti RAM jednoho uzlu] maxmemoryconsumptionperiterator
MaxFanoutThreadsPercentage int Procento vláken na každém uzlu, do které se má rozdávat provádění dotazů. Pokud je nastavená hodnota 100 %, cluster přiřadí všechny procesory na každém uzlu. Například 16 procesorů v clusteru nasazeného v uzlech Azure D14_v2. [1, 100] query_fanout_threads_percent
MaxFanoutNodesPercentage int Procento uzlů v clusteru, na které se má spustit dotaz. Funguje podobným způsobem jako MaxFanoutThreadsPercentage. [1, 100] query_fanout_nodes_percent
MaxResultRecords long Maximální počet záznamů, které může požadavek vrátit volajícímu, nad kterými se výsledky zkrátí. Limit zkrácení ovlivňuje konečný výsledek dotazu, který se doručí zpět klientovi. Limit zkrácení se ale nevztahuje na mezivýsledky poddotazů, jako jsou ty, které jsou výsledkem odkazů mezi clustery. [1, 9223372036854775807] truncationmaxrecords
MaxResultBytes long Maximální velikost dat (v bajtech), kterou může požadavek vrátit volajícímu, nad kterou se výsledky zkrátí. Limit zkrácení ovlivňuje konečný výsledek dotazu, který se doručí zpět klientovi. Limit zkrácení se ale nevztahuje na mezivýsledky poddotazů, jako jsou ty, které jsou výsledkem odkazů mezi clustery. [1, 9223372036854775807] truncationmaxsize
MaxExecutionTime timespan Maximální doba trvání požadavku.
Poznámky:
1) Můžete ho použít k tomu, abyste nad výchozí limity doby provádění umístili další limity, ale neprodlužovali je.
2) Zpracování časového limitu není v rozlišení sekund, ale je navržené tak, aby zabránilo spuštění dotazu po dobu několika minut.
3) Doba potřebná ke čtení datové části v klientovi není považována za součást časového limitu. Záleží na tom, jak rychle volající načítá data ze streamu.
4) Celková doba provádění může překročit nakonfigurovanou hodnotu, pokud dokončení přerušení provádění trvá déle.
[00:00:00, 01:00:00] servertimeout

Poznámka

Omezení, které není definováno nebo je definováno jako null, je převzato ze default zásad omezení požadavků skupiny úloh.

Využití prostředků procesoru

Dotazy můžou využívat všechny prostředky procesoru v rámci clusteru. Pokud je ve výchozím nastavení spuštěno více dotazů současně, používá systém k distribuci prostředků metodu spravedlivého kruhového dotazování. Tato strategie je optimální pro dosažení vysokého výkonu u ad hoc dotazů.

Existují však scénáře, ve kterých můžete chtít omezit prostředky procesoru přidělené konkrétnímu dotazu. Například pokud spouštíte úlohu na pozadí, která dokáže pojmout vyšší latence. Zásady limitů požadavků poskytují flexibilitu k určení nižšího procenta vláken nebo uzlů, které se mají použít při provádění distribuovaných poddotazních operací. Výchozí nastavení je 100 %.

Skupina default úloh

Skupina default úloh má ve výchozím nastavení definované následující zásady. Tuto zásadu je možné změnit.

{
  "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"
  }
}

Poznámka

  • Omezení ve skupině default úloh musí být definovanánull a nesmí mít hodnotu.
  • Všechna omezení ve skupině default úloh jsou nastavená IsRelaxable na true.
  • Limity požadavků jsou vypnuté pro konkrétní typy příkazů v rámci default skupiny úloh, jako .export jsou příkazy a ingestování z příkazů dotazů , jako jsou .set-or-append a .set-or-replace. Když jsou tyto příkazy přiřazené k jiné než výchozí skupině úloh, začnou platit omezení požadavků zadaná v zásadách.

Příklad

Následující kód JSON představuje vlastní objekt zásad omezení požadavků:

{
  "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"
  }
}