Resolução de problemas

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:

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.