Esta página mostra como resolver problemas com o Firestore no modo Datastore.
Latência
A tabela abaixo 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 modo Datastore tenta dimensionar automaticamente para satisfazer o aumento da procura. Quando o modo Datastore é dimensionado, a latência começa a diminuir. Os pontos críticos (taxas de leitura, escrita e eliminação elevadas para um intervalo de entidades restrito) limitam a capacidade de escalabilidade do modo Datastore. Reveja o design para escalabilidade e identifique pontos críticos na sua aplicação. |
Conflito, quer seja devido à atualização de uma única entidade com demasiada frequência ou devido a transações. | ler, escrever |
Reduza a taxa de gravação em entidades individuais. Reveja o isolamento e a consistência das 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 artigo
Otimizar índices.
|
Leituras grandes que devolvem muitas entidades. | ler | Use cursores de consulta para dividir leituras grandes. |
Demasiadas eliminações recentes. | read Isto afeta significativamente as operações que listam tipos 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. |
Indexação de fanout, especialmente para propriedades de matriz. | escrever | Reveja os índices em expansão e a sua utilização de propriedades de matriz. |
Códigos de erro
Esta secção apresenta uma lista de problemas que pode encontrar e sugestões sobre como corrigir cada um deles.
DEADLINE_EXCEEDED
DEADLINE_EXCEEDED A deadline was exceeded on the server.
Para resolver este problema, consulte o guia de resolução de problemas de latência.
ABORTED
As seguintes situações podem aumentar os erros ABORTED
:
- Uma entidade que recebe demasiadas atualizações por segundo.
- Concorrência de transações sobrepostas.
- Aumentos de tráfego que excedam a regra 500-50-5 ou encontrem pontos críticos.
ABORTED Too much contention on these datastore entities. Please try again.
Ou
ABORTED Aborted due to cross-transaction contention. This occurs when multiple transactions attempt to access the same data, requiring Datastore mode to abort at least one in order to enforce serializability.
Para resolver este problema:
- Para aumentos rápidos do tráfego, o modo Datastore tenta dimensionar automaticamente para satisfazer o aumento da procura. Quando o modo Datastore é dimensionado, a latência começa a diminuir.
- Os pontos críticos limitam a capacidade de expansão do modo Datastore. Reveja o artigo Conceber para expansão para identificar pontos críticos.
- Reveja a contenda de dados nas transações e a sua utilização das transações.
- Reduza a taxa de gravação em entidades individuais.
RESOURCE_EXHAUSTED
As seguintes situações podem originar erros RESOURCE_EXHAUSTED
:
Excedeu a quota do nível gratuito e a faturação não está ativada para o seu projeto.
RESOURCE_EXHAUSTED Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.
Para resolver este problema:
- Aguarde pela reposição diária da quota do nível gratuito ou ative a faturação para o seu projeto.
INVALID_ARGUMENT
As seguintes situações podem causar erros INVALID_ARGUMENT
:
- Está a tentar confirmar uma entidade com um valor de propriedade indexado superior a 1500 bytes. Este limite aplica-se à codificação UTF-8 do valor da propriedade.
- Está a tentar confirmar uma entidade com valores de propriedades não indexados superiores a 1 048 487 bytes (1 MiB - 89 bytes). Este limite aplica-se à soma dos valores das propriedades numa entidade. Por exemplo, quatro propriedades de 256 KiB cada excedem o limite.
1500 bytes (indexados) e 1 048 487 bytes (não indexados) são os limites para os valores das propriedades. Não pode exceder estes limites, e estes não são quotas que podem ser ajustadas.
INVALID_ARGUMENT: The value of property property-name is longer than 1500 bytes
ou
INVALID_ARGUMENT: The value of property property_name is longer than 1048487 bytes
Para resolver este problema:
- Para valores de propriedades indexados, divida a propriedade em várias propriedades. Se possível, crie uma propriedade não indexada e mova os dados que não precisam de ser indexados para a propriedade não indexada.
- Para valores de propriedades não indexados, divida a propriedade em várias propriedades ou implemente a compressão para o valor da propriedade.