Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
contentscodifica 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
chocolateusato 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
Loadingprima, 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.