Condividi tramite


Criteri relativi ai limiti delle richieste

Si applica a: ✅Microsoft FabricEsplora dati di Azure

I criteri relativi ai limiti delle richieste di un gruppo di carico di lavoro consentono di limitare le risorse usate dalla richiesta durante l'esecuzione.

Oggetto criteri

Ogni limite è costituito da:

  • Un Value tipizzato: il valore del limite.
  • IsRelaxable : valore booleano che definisce se il limite può essere rilassato dal chiamante, come parte delle proprietà della richiesta della richiesta.

I limiti seguenti sono configurabili:

Proprietà Digitare Descrizione Valori supportati Proprietà della richiesta client corrispondente
DataScope string Ambito dati della query. Questo valore determina se la query si applica a tutti i dati o solo alla cache ad accesso frequente. All, HotCacheo null query_datascope
MaxMemoryPerQueryPerNode long Quantità massima di memoria (in byte) che una query può allocare. [1, 50% di ram totale di un nodo singolo] max_memory_consumption_per_query_per_node
MaxMemoryPerIterator long Quantità massima di memoria (in byte) che un operatore di query può allocare. [1, 50% di ram totale di un nodo singolo] maxmemoryconsumptionperiterator
MaxFanoutThreadsPercentage int Percentuale di thread in ogni nodo in cui eseguire l'esecuzione delle query. Se impostato su 100%, il cluster assegna tutte le CPU in ogni nodo. Ad esempio, 16 CPU in un cluster distribuito in nodi di Azure D14_v2. [1, 100] query_fanout_threads_percent
MaxFanoutNodesPercentage int Percentuale di nodi nel cluster in cui eseguire l'esecuzione delle query. Funzioni in modo analogo a MaxFanoutThreadsPercentage. [1, 100] query_fanout_nodes_percent
MaxResultRecords long Il numero massimo di record consentiti per restituire una richiesta al chiamante, oltre il quale i risultati vengono troncati. Il limite di troncamento influisce sul risultato finale della query, come restituito al client. Tuttavia, il limite di troncamento non si applica ai risultati intermedi delle sottoquery, ad esempio quelli risultanti dalla presenza di riferimenti tra cluster. [1, 9223372036854775807] truncationmaxrecords
MaxResultBytes long Le dimensioni massime dei dati (in byte) che una richiesta può restituire al chiamante, oltre la quale i risultati vengono troncati. Il limite di troncamento influisce sul risultato finale della query, come restituito al client. Tuttavia, il limite di troncamento non si applica ai risultati intermedi delle sottoquery, ad esempio quelli risultanti dalla presenza di riferimenti tra cluster. [1, 9223372036854775807] truncationmaxsize
MaxExecutionTime timespan Durata massima di una richiesta.
Note :
1) Questa opzione può essere usata per applicare limiti superiori ai limiti predefiniti al tempo di esecuzione, ma non estenderli.
2) L'elaborazione del timeout non è alla risoluzione di secondi, ma è progettata per impedire l'esecuzione di una query per minuti.
3) Il tempo necessario per leggere nuovamente il payload nel client non viene considerato come parte del timeout. Dipende dalla velocità con cui il chiamante esegue il pull dei dati dal flusso.
4) Il tempo di esecuzione totale può superare il valore configurato se l'interruzione dell'esecuzione richiede più tempo per il completamento.
[00:00:00, 01:00:00] servertimeout
Proprietà Digitare Descrizione Valori supportati Proprietà della richiesta client corrispondente
DataScope string Ambito dati della query. Questo valore determina se la query si applica a tutti i dati o solo alla cache ad accesso frequente. All, HotCacheo null query_datascope
MaxMemoryPerQueryPerNode long Quantità massima di memoria (in byte) che una query può allocare. [1, 50% di ram totale di un nodo singolo] max_memory_consumption_per_query_per_node
MaxMemoryPerIterator long Quantità massima di memoria (in byte) che un operatore di query può allocare. [1, 50% di ram totale di un nodo singolo] maxmemoryconsumptionperiterator
MaxFanoutThreadsPercentage int Percentuale di thread in ogni nodo in cui eseguire l'esecuzione delle query. Se impostato su 100%, l'evento assegna tutte le CPU in ogni nodo. Ad esempio, 16 CPU in una casa eventi distribuita nei nodi di Azure D14_v2. [1, 100] query_fanout_threads_percent
MaxFanoutNodesPercentage int Percentuale di nodi nella Eventhouse in cui eseguire l'esecuzione delle query. Funzioni in modo analogo a MaxFanoutThreadsPercentage. [1, 100] query_fanout_nodes_percent
MaxResultRecords long Il numero massimo di record consentiti per restituire una richiesta al chiamante, oltre il quale i risultati vengono troncati. Il limite di troncamento influisce sul risultato finale della query, come restituito al client. Tuttavia, il limite di troncamento non si applica ai risultati intermedi delle sottoquery, ad esempio i risultati derivanti dalla presenza di riferimenti inter-eventhouse. [1, 9223372036854775807] truncationmaxrecords
MaxResultBytes long Le dimensioni massime dei dati (in byte) che una richiesta può restituire al chiamante, oltre la quale i risultati vengono troncati. Il limite di troncamento influisce sul risultato finale della query, come restituito al client. Tuttavia, il limite di troncamento non si applica ai risultati intermedi delle sottoquery, ad esempio i risultati derivanti dalla presenza di riferimenti inter-eventhouse. [1, 9223372036854775807] truncationmaxsize
MaxExecutionTime timespan Durata massima di una richiesta.
Note :
1) Questa opzione può essere usata per applicare limiti superiori ai limiti predefiniti al tempo di esecuzione, ma non estenderli.
2) L'elaborazione del timeout non è alla risoluzione di secondi, ma è progettata per impedire l'esecuzione di una query per minuti.
3) Il tempo necessario per leggere nuovamente il payload nel client non viene considerato come parte del timeout. Dipende dalla velocità con cui il chiamante esegue il pull dei dati dal flusso.
4) Il tempo di esecuzione totale potrebbe superare il valore configurato se l'interruzione dell'esecuzione richiede più tempo per il completamento.
[00:00:00, 01:00:00] servertimeout

Nota

Un limite che non è definito o viene definito come null, viene ricavato dai criteri relativi ai limiti delle richieste del gruppo di carico di lavoro default.

Utilizzo delle risorse CPU

Le query possono usare tutte le risorse della CPU all'interno del cluster. Per impostazione predefinita, quando più query vengono eseguite contemporaneamente, il sistema usa un approccio round robin equo per distribuire le risorse. Questa strategia è ottimale per ottenere prestazioni elevate con query ad hoc.

Le query possono usare tutte le risorse della CPU all'interno dell'eventhouse. Per impostazione predefinita, quando più query vengono eseguite contemporaneamente, il sistema usa un approccio round robin equo per distribuire le risorse. Questa strategia è ottimale per ottenere prestazioni elevate con query ad hoc.

Esistono tuttavia scenari in cui è possibile limitare le risorse della CPU allocate a una query specifica. Ad esempio, se si esegue un processo in background in grado di supportare latenze più elevate. I criteri relativi ai limiti delle richieste offrono la flessibilità necessaria per specificare una percentuale inferiore di thread o nodi da usare durante l'esecuzione di operazioni di sottoquery distribuite. L'impostazione predefinita è 100%.

Gruppo di carico di lavoro default

Il gruppo di carico di lavoro default ha i criteri seguenti definiti per impostazione predefinita. Questo criterio può essere modificato.

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

Nota

  • I limiti nel gruppo di carico di lavoro default devono essere definiti e avere un valore nonnull.
  • Tutti i limiti nel gruppo di carico di lavoro default hanno IsRelaxable impostato su true.
  • I limiti delle richieste vengono disattivati per tipi di comando specifici all'interno del gruppo di carico di lavoro default, ad esempio comandi .export e inserimento da comandi di query come .set-or-append e .set-or-replace. Quando questi comandi vengono assegnati a un gruppo di carico di lavoro non predefinito, i limiti delle richieste specificati nei criteri diventano applicabili.

Esempio

Il codice JSON seguente rappresenta un oggetto criteri per i limiti delle richieste personalizzate:

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