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. |