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

Per rapidi aumenti del traffico, Firestore tenta di scalare automaticamente per soddisfare la domanda maggiore. Quando Firestore scala, la latenza inizia a diminuire.

I punti di interesse (elevata frequenza di lettura, scrittura ed eliminazione fino a un intervallo di documenti ristretto) limitano la capacità di scalabilità di Firestore. Esamina la progettazione per la scalabilità e identifica i punti critici nella tua applicazione.

Conflitto, derivante dall'aggiornamento troppo frequente di un singolo documento o dalle transazioni. lettura, scrittura

Riduci la velocità di scrittura ai singoli documenti.

Esamina la contesa dei dati nelle transazioni e il modo in cui utilizzi le transazioni.

Query di unione lenta. read Ad esempio, le query con più filtri di uguaglianza (==) ma non supportate da indici composti possono comportare query di unione lenta. 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 troppe eliminazioni recenti, il problema dovrebbe risolversi automaticamente dopo un po' di tempo. Se il problema non si risolve, contatta l'assistenza.
Aggiunta e rimozione dei listener troppo rapidi. query listener in tempo reale Consulta le best practice per gli aggiornamenti in tempo reale.
Ascoltare documenti di grandi dimensioni o una query con molti risultati. query listener in tempo reale Consulta le best practice per gli aggiornamenti in tempo reale
Fanout dell'indice, in particolare per i campi array e i campi mappa. write Rivedi l'utilizzo dei campi array e mappa i campi. Per i campi della mappa, puoi disabilitare l'indicizzazione dei sottocampi. Puoi anche utilizzare esenzioni a livello di raccolta.
Operazioni di scrittura in batch e in batch di grandi dimensioni. write

Prova a ridurre il numero di scritture in ogni scrittura in batch. Le scritture in batch sono atomiche e molte scritture in un unico batch possono aumentare la latenza e i conflitti. Ad esempio, un batch di 10 operazioni di scrittura ha prestazioni migliori di un batch di 500 scritture.

Per l'inserimento di dati in blocco in cui non è necessaria l'atomicità, utilizza una libreria client server con scritture individuali parallelizzate. Le scritture in batch hanno prestazioni migliori delle scritture serializzate, ma non delle scritture parallele.