Azure limiti del libro mastro riservato

Azure libro mastro riservato limita il numero di libro mastro in una sottoscrizione e i dati e il codice archiviati da un libro mastro, per mantenere prevedibili le prestazioni e la disponibilità di ogni libro mastro. Questo articolo descrive questi limiti, il modo in cui il libro mastro risponde quando una richiesta supera tali limiti e quali prestazioni aspettarsi da un libro mastro.

Note

I limiti in questo articolo sono predefiniti. In alcuni casi, un singolo libro mastro può avere limiti diversi, ad esempio un libro mastro creato prima dell'introduzione di un limite. Per richiedere limiti più elevati o discutere le limitazioni, contattare supporto tecnico di Azure.

Limiti delle sottoscrizioni

Il limite seguente si applica a ogni sottoscrizione Azure.

Limit Value
Ledgers per sottoscrizione 2

Limiti dei dati libro mastro

I limiti seguenti si applicano a ogni libro mastro per impostazione predefinita.

Limit Valore predefinito Codice errore
Raccolte per libro mastro 5,000 CollectionCapacityExceeded
Lunghezza ID raccolta 256 byte CollectionIdTooLong
Dimensioni del contenuto di una voce libro mastro 8 KiB (8.192 byte) EntrySizeCapacityExceeded
Tag per libro mastro (solo ledgger pubblici) 10,000 TagCapacityExceeded
  • Raccolte per libro mastro: la raccolta predefinita non viene conteggiata. Quando un libro mastro raggiunge il limite, le scritture che creerebbero una nuova raccolta vengono rifiutate. Le scritture nelle raccolte esistenti hanno ancora esito positivo.
  • Lunghezza ID raccolta: la lunghezza viene misurata in byte dell'ID con codifica UTF-8, dopo la decodifica dell'URL. Il limite si applica solo quando una scrittura crea una nuova raccolta, pertanto è possibile continuare a scrivere e leggere dalle raccolte create prima dell'introduzione di questo limite.
  • Dimensioni del contenuto di una voce mastro: le dimensioni vengono misurate in byte del valore con contents codifica UTF-8, dopo la decodifica JSON. Il contenuto di 8.192 byte viene accettato. Il limite si applica alle scritture nelle raccolte nuove ed esistenti. L'ID raccolta, i tag e altri campi della richiesta non vengono conteggiati per questo limite. L'intera richiesta è soggetta anche alla dimensione massima del corpo della richiesta del libro mastro.
  • Tag per libro mastro: un tag viene conteggiato una volta per ogni raccolta che lo usa. Ad esempio, il tag chocolate usato in due raccolte viene conteggiato come due tag. Quando un libro mastro raggiunge il limite, le scritture che aggiungerebbero un nuovo tag a una raccolta vengono rifiutate. Scrive senza tag o con tag già usati dall'insieme.

Una scrittura che supera un limite viene rifiutata con codice di stato HTTP 400 (richiesta non valida) e non viene scritto nulla nella richiesta nel libro mastro. La risposta contiene il codice di errore e un messaggio che include il limite applicabile al libro mastro. Ad esempio:

{
  "error": {
    "code": "EntrySizeCapacityExceeded",
    "message": "Entry contents of 9000 bytes exceed the limit of 8192 bytes."
  }
}

Limiti dei tag per scrittura

I tag sono supportati solo nei ledgger pubblici. I limiti seguenti si applicano a ogni libro mastro pubblico.

Limit Value
Tag per scrittura 5
Lunghezza tag 63 caratteri

I tag non possono essere vuoti e possono contenere solo i caratteri A–Z, a–, 0–9z, -_, ., e ~. Una scrittura che supera questi limiti o contiene un tag non valido viene rifiutata con codice di stato HTTP 400 e il NotAllowed codice di errore.

Limiti delle funzioni definite dall'utente

I limiti seguenti si applicano alle funzioni definite dall'utente (UDF) in ogni libro mastro. Le richieste che le superano vengono rifiutate con codice di stato HTTP 400.

Limit Value Codice errore
UDF per libro mastro 100 UserDefinedFunctionCapacityExceeded
Lunghezza ID funzione definita dall'utente 256 byte InvalidFunctionId
Dimensioni del codice UDF 64 KiB (65.536 byte) InvalidInput
Pre-hook per scrittura 5 InvalidInput
Post-hook per scrittura 5 InvalidInput

Il numero di funzioni definite dall'utente e i limiti di lunghezza ID si applicano solo quando si crea una funzione definita dall'utente. È comunque possibile aggiornare una funzione definita dall'utente esistente se il codice rientra in 64 KiB.

Per le opzioni di runtime applicabili quando viene eseguita una funzione definita dall'utente, vedere Esecuzione di funzioni definite dall'utente. Per altre informazioni sui pre-hook e post-hook, vedere Hook delle transazioni.

Opzioni di runtime dell'endpoint definite dall'utente

I valori impostati con PATCH /app/userDefinedEndpoints/runtimeOptions devono essere compresi negli intervalli seguenti. In caso contrario, la richiesta viene rifiutata con codice di stato HTTP 400 e il InvalidInput codice di errore. Vengono controllate solo le opzioni il cui valore cambia la richiesta.

Opzione di runtime Valori consentiti
max_heap_bytes Fino a 209.715.200 (200 MiB)
max_stack_bytes Da 1 a 10.485.760 (10 MiB)
max_execution_time_ms Fino a 10.000 (10 secondi)
max_cached_interpreters da 1 a 20

Performance

Le prestazioni di un libro mastro dipendono dal carico di lavoro, ad esempio le dimensioni delle voci, il numero di richieste inviate contemporaneamente e la combinazione di letture e scritture. Le indicazioni seguenti offrono un'idea generale di cosa aspettarsi. Non è una garanzia.

Throughput

  • Un libro mastro può sostenere centinaia di scritture al secondo. Le voci più piccole e più richieste simultanee aumentano la frequenza. Le scritture che eseguono funzioni definite dall'utente richiedono più tempo, a seconda del codice delle funzioni.
  • La lettura dell'ultima voce di una raccolta usa meno risorse di una scrittura, quindi un libro mastro può in genere servire più di queste richieste. Ottenere una voce in base all'ID transazione, ottenere una ricevuta e le query di intervallo usano più risorse rispetto alla lettura dell'ultima voce, perché il libro mastro carica prima i dati dall'archiviazione. Una frequenza elevata di queste richieste riduce la velocità effettiva lasciata per le scritture.
  • Un client che attende ogni risposta prima che invii la richiesta successiva è limitata dal tempo di round trip al libro mastro. Per sfruttare al meglio un libro mastro, inviare le richieste contemporaneamente e riutilizzare le connessioni.

Se il carico di lavoro necessita di una velocità effettiva elevata sostenuta, testarlo su un libro mastro prima di passare all'ambiente di produzione. Se è necessaria una maggiore velocità effettiva, contattare supporto tecnico di Azure.

Latenza

  • Per impostazione predefinita, una richiesta di scrittura restituisce non appena il libro mastro accetta la scrittura e il libro mastro esegue il commit della scrittura poco dopo. Prima di fare affidamento su una scrittura, ad esempio per ottenere la ricevuta, verificare che lo stato sia Committed. Le librerie client possono attendere il commit.
  • Ottenere una voce in base all'ID transazione, ottenere una ricevuta e le query di intervallo possono restituire Loading prima, mentre il libro mastro carica i dati. Ripetere la richiesta entro un minuto fino a quando non restituisce il risultato.
  • La latenza dipende anche dalla distanza e dal carico. Ogni nuova connessione richiede un handshake TLS con il libro mastro, quindi riutilizzare le connessioni ed eseguire i client vicino all'area del libro mastro. Aspettarsi che la latenza aumenti man mano che il carico su un libro mastro si avvicina a ciò che può sostenere.