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