Resolva problemas de latência
Esta página mostra como resolver problemas de latência com o Firestore.
Latência
A tabela seguinte descreve as possíveis causas do aumento da latência:
Causa da latência | Tipos de operações afetadas | Resolução |
---|---|---|
Tráfego sustentado que excede a regra 500-50-5. | ler, escrever |
Para aumentos rápidos de tráfego, o Firestore tenta dimensionar automaticamente para satisfazer o aumento da procura. Quando o Firestore é dimensionado, a latência começa a diminuir. Os pontos críticos (taxas de leitura, escrita e eliminação elevadas para um intervalo de documentos restrito) limitam a capacidade de escalabilidade do Firestore. Reveja o design para escalabilidade e identifique pontos críticos na sua aplicação. |
Conflitos, quer sejam causados pela atualização de um único documento com demasiada frequência ou por transações. | ler, escrever |
Reduza a taxa de gravação em documentos individuais. Reveja a contenda de dados nas transações e como usa as transações. |
Consultas de junção de intercalação lentas. | ler |
Por exemplo, as consultas com vários filtros de igualdade (== ),
mas não suportadas por índices compostos, podem resultar em consultas de junção de união lentas.
Para melhorar o desempenho, adicione índices compostos para estas consultas. Consulte o motivo n.º 3 em Por que motivo a minha consulta do Firestore é lenta?
|
Leituras grandes que devolvem muitos documentos. | ler | Use a paginação para dividir leituras grandes. |
Demasiadas eliminações recentes. | read Isto afeta significativamente as operações que listam coleções numa base de dados. |
Se a latência for causada por demasiadas eliminações recentes, o problema deve resolver-se automaticamente após algum tempo. Se o problema não ficar resolvido, contacte o apoio técnico. |
Adicionar e remover ouvintes demasiado rapidamente. | consultas de ouvintes em tempo real | Consulte as práticas recomendadas para atualizações em tempo real. |
Ouvir documentos grandes ou uma consulta com muitos resultados. | consultas de ouvintes em tempo real | Veja as práticas recomendadas para atualizações em tempo real |
Indexação fanout, especialmente para campos de matriz e campos de mapa. | escrever | Reveja a sua utilização de campos de matriz e campos de mapas. Para mapear campos, pode desativar a indexação de subcampos. Também pode usar isenções ao nível da recolha. |
Escritas grandes e escritas em lote. | escrever |
Experimente reduzir o número de gravações em cada gravação em lote. As escritas em lote são atómicas e muitas escritas num único lote podem aumentar a latência e a contenção. Por exemplo, um lote de 10 gravações tem um melhor desempenho do que um lote de 500 gravações. Para a introdução de dados em massa em que não precisa de atomicidade, use uma biblioteca de cliente do servidor com gravações individuais paralelizadas. As escritas em lote têm um desempenho melhor do que as escritas serializadas, mas não melhor do que as escritas paralelas. |