Padrões de mapa de calor para chaves de índice

Nesta página, mostramos exemplos de padrões que podem ser vistos em um mapa de calor do Key Visualizer. Esses padrões podem ajudar você a resolver problemas de desempenho específicos.

Uso distribuído de modo uniforme

Mapa de calor que mostra leituras e gravações distribuídas uniformemente

Se um mapa de calor mostrar uma mistura refinada de cores escuras e claras, as operações de gravação/exclusão para chaves de índice estarão distribuídas uniformemente pelo banco de dados. Esse mapa de calor provavelmente representa um padrão de uso eficaz para o Firestore.

Índices em chaves sequenciais

Um mapa de calor com uma única linha diagonal brilhante pode indicar um índice em uma chave que aumenta ou diminui, como um carimbo de data/hora. Não é recomendável usar índices em chaves sequenciais, porque eles podem criar pontos de acesso. Ao usar o ponto de acesso, você pode observar latências elevadas correspondentes.

Alguns exemplos de hotspots comuns no índice são:

Hotspotting devido ao aumento da marcação de tempo

Mapa de calor mostrando pontos de concentração devido ao aumento da marcação de tempo

Neste exemplo, um mapa de calor com uma única linha diagonal brilhante pode indicar um banco de dados que usa operações de gravação/exclusão de índice estritamente crescentes ou decrescentes em um nome de campo de carimbo de data/hora.

Hotspotting devido ao aumento dos nomes de campo

Mapa de calor mostrando pontos de concentração devido ao aumento do campo

Neste exemplo, um mapa de calor com uma única linha diagonal brilhante pode indicar um banco de dados que usa operações de gravação/exclusão de índice estritamente crescentes ou decrescentes em um campo incremental, como números de faturas gerados automaticamente.

Para identificar o problema de uso excessivo do ponto de acesso, use a ferramenta Key Visualizer e entenda a estrutura da chave de índice para determinar qual índice causa o problema e isentar esses índices com práticas recomendadas.

Entender a estrutura da chave de índice

Antes de entender a estrutura das chaves de índice que aparecem na ferramenta Key Visualizer, saiba mais sobre os índices no Firestore.

O código a seguir mostra um exemplo de formato de chave de índice que aparece quando você passa o cursor sobre o intervalo de chaves afetado no mapa de calor.

COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
  PROPERTIES: (Timestamp: DESC) 
  VALUES: (16500000000000001)
  DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001

Em que:

  • COLLECTION: local da coleção no banco de dados. Com base no escopo, pode ser o caminho da coleção para o escopo da coleção ou o nome da coleção para o escopo do grupo de coleções.
  • PROPRIEDADES: campos usados para criar o índice. A propriedade de ordenação __name__ só é mostrada para definições de índice que modificam a ordenação padrão.
  • VALUES: valor de cada propriedade.
  • DOCUMENT: ID do documento atualizado em uma operação.

No exemplo anterior, identifique os campos do valor PROPERTIES para encontrar o índice afetado.

Para encontrar o índice, siga estas etapas:

  1. No console do Google Cloud , acesse a página Bancos de dados.

    Acessar "Bancos de dados"

  2. Selecione o banco de dados necessário na lista de bancos de dados.

  3. No menu de navegação, clique em Índices.

  4. Acesse a guia Composto ou Campo único.

    Para identificar o tipo de índice, analise o campo PROPERTIES. Confira exemplos de chaves de índice para mais informações.

  5. Clique em Filtrar, selecione Campos e insira o nome do campo.

    Use o operador OR para adicionar mais campos em caso de índices compostos.

Depois de identificar o índice que está causando problemas, use as seguintes soluções:

  • Índice composto: modifique o índice para garantir que o campo cujo valor aumenta ou diminui monotonicamente não seja selecionado como o primeiro campo para indexação ou exclua o índice.

  • Índice de campo único: adicione uma isenção para o campo e a ordem de classificação que você quer isentar. Consulte Como adicionar uma exceção de campo único para mais informações.

Exemplos de entradas de chave de índice no mapa de calor

Tipo Descrição Exemplo
Índices de campo único com escopo de coleção ASC, DESC O Firestore cria índices com um escopo de coleção por padrão.

Entrada de índice para o índice de campo único no campo Timestamp, em ordem decrescente para o documento Users/5000000000000001.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Índices de campo único do escopo da coleção para campos de matriz Para cada campo de matriz em um documento, o Firestore cria e mantém um índice "array-contains" do escopo da coleção. Entrada de índice

para índices de campo único no modo "array-contains" que serão criados quando um campo Country: [USA, Japan] for adicionado ao documento. Os índices ASC e DESC também serão criados por padrão para esse campo. O exemplo mostra o índice ASC para o campo Country.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES:(Country: ASC)
VALUES:([USA, Japan]) DOCUMENT:(projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001)
Índices de campo único do grupo de coleções ASC, DESC, ARRAY Um grupo de coleções inclui todas as coleções com o mesmo ID.
Entrada de índice para o índice de campo único do grupo de coleções no campo Timestamp, em ordem decrescente.
COLLECTION GROUP: Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001L)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Índices de campo único do grupo de coleções ASC, DESC, ARRAY Entrada de índice para o índice de campo único do grupo de coleções no campo Country no modo array-contains COLLECTION GROUP: Users PROPERTIES: (Country: ARRAY ASC) VALUES: (USA) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Entrada de índice composto de coleção com propriedades ASC, ASC, ARRAY As entradas de índice composto com pai são criadas quando documentos aninhados são criados com a definição de índice de escopo de coleção.

Entrada de índice para índice composto com campos Timestamp e Name em ordem crescente e Country no modo array-contains.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: ASC, Name: ASC,Country: ARRAY)
VALUES: (16500000000000001L, 'Alice', 'USA')
DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001)
Entrada de índice composto com escopo de grupo de coleções com propriedades ASC, ASC Entrada de índice para o índice composto no campo Timestamp, em ordem crescente, e no campo Name, em ordem crescente COLLECTION GROUP: Users
PROPERTIES: (Timestamp: ASC, Name: ASC)
VALUES: (16500000000000001L, 'Alice')
DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001)
Entrada de índice composto com escopo de coleção e propriedades ASC e __name__ Entrada de índice para o índice composto no campo Timestamp em ordem crescente e com classificação __name__ em ordem decrescente para o documento Users/5000000000000001. Você pode usar __name__ como o campo final em uma definição de índice para mudar a ordem padrão dos resultados. COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: ASC, __name__ DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001

A seguir