Resolver problemas de latencia
En esta página se explica cómo resolver problemas de latencia con Firestore.
Latencia
En la siguiente tabla se describen las posibles causas del aumento de la latencia:
Causa de la latencia | Tipos de operaciones afectadas | Resolución |
---|---|---|
Tráfico sostenido que supera la regla 500-50-5. | Lectura y escritura |
En caso de aumentos rápidos del tráfico, Firestore intenta escalarse automáticamente para satisfacer el aumento de la demanda. Cuando Firestore se escala, la latencia empieza a disminuir. Los puntos de acceso (tasas altas de lectura, escritura y eliminación en un intervalo de documentos reducido) limitan la capacidad de escalado de Firestore. Revisa el diseño para la escalabilidad e identifica los puntos de acceso de tu aplicación. |
Contención, ya sea por actualizar un solo documento con demasiada frecuencia o por transacciones. | Lectura y escritura |
Reduce la velocidad de escritura en documentos concretos. Consulta la contención de datos en transacciones y cómo usas las transacciones. |
Consultas de combinación de fusión lentas. | read |
Por ejemplo, las consultas con varios filtros de igualdad (== ) que no estén respaldadas por índices compuestos pueden dar lugar a consultas de combinación lentas.
Para mejorar el rendimiento, añade índices compuestos para estas consultas.
Consulta el motivo 3 en
¿Por qué es lenta mi consulta de Firestore?
|
Lecturas grandes que devuelven muchos documentos. | read | Usa la paginación para dividir las lecturas grandes. |
Se han eliminado demasiados elementos recientemente. | read Esto afecta en gran medida a las operaciones que muestran colecciones de una base de datos. |
Si la latencia se debe a que se han eliminado demasiados elementos recientemente, el problema debería resolverse automáticamente al cabo de un tiempo. Si el problema no se resuelve, póngase en contacto con el servicio de asistencia. |
Añadir y quitar listeners demasiado rápido. | consultas de escucha en tiempo real | Consulta las prácticas recomendadas para las actualizaciones en tiempo real. |
Escuchar documentos grandes o una consulta con muchos resultados. | consultas de escucha en tiempo real | Consulta las prácticas recomendadas para las actualizaciones en tiempo real. |
Fan-out de índice, especialmente para campos de matriz y campos de mapa. | write | Revisa el uso que haces de los campos de matriz y de mapa. En el caso de los campos de mapa, puede inhabilitar la indexación de los subcampos. También puedes usar exenciones a nivel de colección. |
Escrituras grandes y escrituras por lotes. | write |
Prueba a reducir el número de escrituras en cada escritura por lotes. Las escrituras por lotes son atómicas y muchas escrituras en un solo lote pueden aumentar la latencia y la contención. Por ejemplo, un lote de 10 operaciones de escritura funciona mejor que un lote de 500 operaciones de escritura. Para introducir datos en bloque sin necesidad de atomicidad, usa una biblioteca de cliente de servidor con escrituras individuales paralelizadas. Las escrituras por lotes tienen un mejor rendimiento que las escrituras serializadas, pero no que las escrituras paralelas. |