Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Comprendere la limitazione di scrittura e la contropressione del Global Secondary Index (GSI) in DynamoDB
La limitazione della pressione di contropressione GSI rappresenta uno degli scenari di throttling più complessi in DynamoDB perché crea una relazione indiretta tra le operazioni di scrittura e la limitazione: l'applicazione scrive su una tabella di base ma subisce una limitazione dovuta ai vincoli di capacità su uno o più indici.
Comprendere la limitazione della contropressione GSI
Quando scrivi su una tabella DynamoDB, tutti gli indici secondari globali GSIs () su quella tabella vengono aggiornati in modo asincrono utilizzando un modello eventualmente coerente. Se un GSI non dispone di una capacità sufficiente per gestire questi aggiornamenti, DynamoDB limita la scrittura nella tabella di base per mantenere la coerenza dei dati. Questa è chiamata contropressione GSI. Per ulteriori informazioni sul GSIs funzionamento, consulta Indici secondari globali in DynamoDB.
A differenza della limitazione diretta delle tabelle, in cui la risorsa a cui si accede è anche la risorsa che causa la limitazione, la contropressione GSI crea una dipendenza tra la tabella di base e i suoi indici. Anche se la tabella di base ha un'ampia capacità, le scritture verranno limitate se un GSI associato non è in grado di gestire il volume di aggiornamento. Questa relazione è particolarmente importante da comprendere perché i vincoli a livello di partizione si applicano indipendentemente sia alla tabella di base che a ciascun GSI: ognuno ha la propria struttura di partizione e i corrispondenti limiti di throughput.
Il partizionamento GSI si basa sulla chiave di partizione del GSI, che spesso è diversa dalla chiave di partizione della tabella base. Anche se l'accesso alla tabella di base è perfettamente distribuito tra le partizioni, gli aggiornamenti GSI potrebbero comunque concentrarsi su partizioni specifiche, creando punti caldi nel GSI. Per le best practice generali sulla progettazione delle chiavi di partizione per entrambe le tabelle e GSIs, consulta Progettazione delle chiavi di partizione DynamoDB.
Ad esempio, se la tabella di base utilizza customerId
come chiave di partizione (distribuita uniformemente) ma il GSI lo utilizza status
come chiave di partizione (con valori possibili limitati come «attivo», «pendente», «chiuso»), gli aggiornamenti agli elementi con i valori di stato più diffusi possono creare partizioni GSI calde anche quando l'accesso alla tabella di base è bilanciato. Ciò crea uno scenario particolarmente impegnativo in cui l'applicazione potrebbe subire una limitazione a causa delle partizioni calde GSI anche se sia la tabella di base che GSI hanno una capacità complessiva sufficiente e il modello di accesso della tabella di base appare ben distribuito.
Anche se l'eccezione di limitazione si riferisce al GSI (viaResourceArn
), l'operazione effettiva che viene limitata è la scrittura nella tabella di base. Ciò può creare confusione perché l'applicazione sta scrivendo sulla tabella base ma riceve un'eccezione relativa al GSI.
Tipi di throttling GSI
La limitazione della contropressione GSI si manifesta attraverso diversi tipi di eccezioni a seconda del vincolo di capacità specifico:
-
Superata la capacità assegnata dal GSI: si verifica quando il GSI non dispone di unità di capacità di scrittura sufficienti per gestire gli aggiornamenti dalle operazioni della tabella di base. Ciò produce un problema e
ResourceArn
indica direttamente che IndexWriteProvisionedThroughputExceededlo specifico GSI presentaProvisionedThroughputExceededException
con vincoli di capacità. -
Velocità effettiva massima su richiesta di GSI superata: si verifica quando le operazioni di scrittura GSI superano i limiti massimi configurati nelle tabelle su richiesta. Ciò produce un messaggio
ThrottlingException
con il motivo IndexWriteMaxOnDemandThroughputExceeded, che identifica lo specifico GSI con restrizioni di throughput configurate. -
Limiti di partizione GSI superati: si verifica quando le singole partizioni GSI superano i limiti di throughput (partizioni calde), anche se la capacità complessiva del GSI sembra sufficiente. Ciò genera un messaggio
ThrottlingException
con il motivo IndexWriteKeyRangeThroughputExceeded, che indica problemi di partizione a caldo sullo specifico GSI identificato nel.ResourceArn
Ciò è particolarmente importante perché la distribuzione delle partizioni GSI può differire in modo significativo dalla distribuzione delle partizioni della tabella base, creando punti caldi nel GSI anche quando l'accesso alla tabella di base è distribuito in modo uniforme. -
Limiti dell'account GSI superati: si attiva quando le operazioni di scrittura su un GSI specifico superano i limiti di throughput regionali per tabella (o per ogni singolo GSI all'interno di quella tabella) stabiliti a livello di account. DynamoDB restituisce
ThrottlingException
una risposta con il IndexWriteAccountLimitExceededmotivo, indicando il GSI che ne ha spinto l'utilizzo oltre i limiti dell'account. Questa limitazione avviene indipendentemente per ogni GSI che supera il limite. Per informazioni sulle quote per tabella, per account, regionali e di servizio, vedere. Quote in Amazon DynamoDB