Resolver problemas de latência
Nesta página, mostramos como resolver problemas de latência com o Firestore.
Latência
A tabela a seguir descreve as possíveis causas do aumento da latência:
Causa da latência | Tipos de operações afetadas | Resolução |
---|---|---|
Tráfego prolongado que excede regra 500-50-5. | Leitura/gravação |
Para aumentos rápidos no tráfego, o Firestore tenta escalonar automaticamente para atender ao aumento na demanda. Quando o Firestore faz o escalonamento, a latência começa a diminuir. Os pontos de acesso (altas taxas de leitura, gravação e exclusão para um intervalo de documentos estreito) limitam a capacidade de escalonamento do Firestore. Analise o design para escala e identifique pontos de acesso no aplicativo. |
Contenção, seja para atualizar um único documento com muita frequência ou de transações. | Leitura/gravação |
Reduza a taxa de gravação em documentos individuais. Revise a contenção de dados em transaçõesr e como você usa as transações. |
Consultas lentas de mesclagem. | ler |
Por exemplo, consultas com vários filtros de igualdade (== ),
mas não respaldadas por índices compostos, podem resultar em consultas lentas de mesclagem.
Para melhorar o desempenho, adicione índices compostos a essas consultas.
Consulte o motivo 3 em
Por que minha consulta do Firestore está lenta?
|
Leituras grandes que retornam muitos documentos. | ler | Use a paginação para dividir leituras grandes. |
Excesso de exclusões recentes. | read Isso afeta muito as operações que listam coleções em um banco de dados. |
Se a latência for causada por muitas exclusões recentes, o problema será resolvido automaticamente após algum tempo. Se o problema não for resolvido, entre em contato com o suporte. |
Adicionar e remover listeners muito rápido. | consultas de listener em tempo real | Veja as práticas recomendadas para atualizações em tempo real. |
Detectar documentos grandes ou uma consulta com muitos resultados. | consultas de listener em tempo real | Veja as práticas recomendadas para atualizações em tempo real |
Fanout de índice, especialmente para campos de matriz e de mapa. | write | Analise o uso de campos de matriz e de mapa. Nos campos do mapa, é possível desativar a indexação de subcampos. Também é possível usar isenção no nível da coleção. |
Gravações grandes e gravações em lote. | write |
Tente reduzir o número de gravações em cada gravação em lote. As gravações em lote são atômicas, e muitas gravações em um único lote podem aumentar a latência e a contenção. Por exemplo, um lote de 10 gravações tem desempenho melhor do que um lote de 500 gravações. Para entrada de dados em massa em que você não precisa de atomicidade, use uma biblioteca de cliente do servidor com gravações individuais em paralelo. As gravações em lote apresentam melhor desempenho do que aquelas em série, mas não melhor do que as executadas em paralelo. |