Risolvere i problemi di latenza

Questa pagina mostra come risolvere i problemi di latenza con Firestore.

Latenza

La tabella seguente descrive le possibili cause dell'aumento della latenza:

Causa della latenza Tipi di operazioni interessate Risoluzione
Traffico sostenuto che supera la regola 500-50-5. lettura, scrittura

In caso di aumenti rapidi del traffico, Firestore tenta di eseguire automaticamente la scalabilità per soddisfare la domanda in aumento. Quando Firestore viene scalato, la latenza inizia a diminuire.

Gli hot spot (elevati tassi di lettura, scrittura ed eliminazione per un intervallo di documenti ristretto) limitano la capacità di Firestore di scalare. Esamina la progettazione per la scalabilità e identifica i punti critici della tua applicazione.

Concorrenza, ad esempio a causa dell'aggiornamento troppo frequente di un singolo documento o delle transazioni. lettura, scrittura

Riduci la frequenza di scrittura dei singoli documenti.

Esamina la contesa dei dati nelle transazioni e come utilizzi le transazioni.

Query di unione dinamica lenta. read Ad esempio, le query con più filtri di uguaglianza (==) ma non supportate da indici composti possono comportare query di unione dinamica lente. Per migliorare le prestazioni, aggiungi indici composti per queste query. consulta il motivo 3 in Perché la mia query Firestore è lenta?
Letture di grandi dimensioni che restituiscono molti documenti. read Utilizza la paginazione per suddividere le letture di grandi dimensioni.
Troppe eliminazioni recenti. read
Questo influisce notevolmente sulle operazioni che elencano le raccolte in un database.
Se la latenza è causata da un numero eccessivo di eliminazioni recenti, il problema dovrebbe risolversi automaticamente dopo un po' di tempo. Se il problema persiste, contatta l'assistenza.
Aggiunta e rimozione di ascoltatori troppo rapidamente. query sull'ascoltatore in tempo reale Consulta le best practice per gli aggiornamenti in tempo reale.
Ascolto di documenti di grandi dimensioni o di una query con molti risultati. query sull'ascoltatore in tempo reale Consulta le best practice per gli aggiornamenti in tempo reale
Espansione dell'indice, in particolare per i campi array e mappa. write Esamina l'utilizzo dei campi array e dei campi mappa. Per i campi mappa, puoi disattivare l'indicizzazione dei sottocampi. Puoi anche utilizzare esenzioni a livello di raccolta.
Scritture di grandi dimensioni e in batch. write

Prova a ridurre il numero di scritture in ogni scrittura raggruppata. Le scritture collettive sono atomiche e molte scritture in un unico batch possono aumentare la latenza e le contese. Ad esempio, un batch di 10 scritture ha un rendimento migliore rispetto a un batch di 500 scritture.

Per l'inserimento collettivo di dati in cui non è richiesta l'atomicità, utilizza una libreria client server con singole scritture parallelizzate. Le scritture collettive hanno un rendimento migliore rispetto alle scritture serializzate, ma non rispetto alle scritture parallele.