Esta página mostra exemplos de padrões que pode ver num mapa de calor do Key Visualizer. Estes padrões podem ajudar a resolver problemas de desempenho específicos.
Utilização distribuída uniformemente
Se um mapa de calor mostrar uma mistura detalhada de cores escuras e claras, as operações de escrita/eliminação para chaves de índice são distribuídas uniformemente por toda a base de dados. Este mapa de calor representa provavelmente um padrão de utilização eficaz para o modo Datastore.
Índices em chaves sequenciais
Um mapa térmico com uma única linha diagonal brilhante pode indicar um índice que está numa chave que está a aumentar ou a diminuir rigorosamente, como a data/hora. Os índices em chaves sequenciais não são recomendados e podem criar pontos críticos. Quando usa o hotspot, pode observar latências elevadas correspondentes.
Seguem-se alguns exemplos de pontos de acesso comuns no índice:
Hotspotting devido ao aumento da indicação de tempo
Neste exemplo, um mapa de calor com uma única linha diagonal brilhante pode indicar uma base de dados que usa operações de escrita/eliminação de índice estritamente crescentes ou decrescentes numa propriedade de data/hora.
Hotspotting devido ao aumento dos nomes das propriedades
Neste exemplo, um mapa de calor com uma única linha diagonal brilhante pode indicar uma base de dados que usa operações de escrita/eliminação de índice estritamente crescentes ou decrescentes numa propriedade incremental, como números de faturas gerados automaticamente.
Para identificar o problema de hotspotting, use a ferramenta Key Visualizer e compreenda a estrutura da chave de índice para determinar que índice causa o problema e isentar esses índices com práticas recomendadas.
Compreenda a estrutura da chave de índice
Antes de compreender a estrutura das chaves de índice que vê na ferramenta Key Visualizer, saiba mais sobre os índices no modo Datastore.
O código seguinte mostra um exemplo de formato de chave de índice que vê quando passa o cursor do rato sobre o intervalo de chaves afetado no mapa térmico.
NAMESPACE: NS KIND: Users
PROPERTIES: (Timestamp: DESC, Name: DESC)
ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),`UserList`,1)
VALUES: (16500000000000001,'Alice')
ENTITY:KEY(PROJECT('PROJECT_ID'),NAMESPACE(''),`UserList`,1,`User`,5000000000000001)
Onde:
- NAMESPACE: namespace da entidade.
- KIND: tipo de entidade que categoriza as entidades.
- PROPERTIES: propriedades relacionadas com a entidade. A propriedade de ordenação
__key__
só é apresentada para definições de índice que modificam a ordenação predefinida. - ANCESTOR: caminho do elemento principal opcional para localizar a entidade na hierarquia da base de dados.
- VALORES: valor de cada propriedade.
- ENTITY: ID da entidade atualizada numa operação.
No exemplo anterior, identifique as propriedades do valor PROPERTIES para encontrar o índice afetado.
Para encontrar o índice, conclua os seguintes passos:
Aceda à página Índices do modo Datastore na Google Cloud consola.
Aceda aos índices do modo Datastore
Pode identificar o tipo de índice analisando o campo PROPERTIES. Consulte exemplos de chaves de índice para mais informações.
Clique em Filtrar, selecione Campos e introduza o nome do campo.
Use o operador OR para adicionar mais propriedades no caso de índices compostos.
Depois de identificar o índice que está a causar problemas, pode usar as seguintes soluções:
- Índice incorporado: exclua a propriedade para que o índice não mantenha entradas de índice para essa propriedade. Consulte o artigo Propriedades excluídas para mais informações.
- Índice composto: modifique o índice no ficheiro
index.yaml
para garantir que o campo cujo valor aumenta ou diminui monotonicamente não é selecionado como o primeiro campo para indexação ou elimine o índice. Consulte o artigo Acerca do index.yaml para mais informações.
Exemplos de entradas de chaves de índice no mapa de calor
Tipo | Descrição | Exemplo |
---|---|---|
Entrada de índice incorporada | Entrada de índice para o índice de propriedade único na propriedade Timestamp , por ordem descendente para o espaço de nomes NS . |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'), Utilizadores, 5000000000000001) |
Entrada de índice incorporada | Entrada de índice para o índice de propriedade único no espaço de nomes predefinido. | NAMESPACE: ' ' KIND: Users PROPERTIES: (Timestamp: DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'), Utilizadores, 5000000000000001) |
Entrada de índice composto | Entrada de índice para o índice composto na propriedade Timestamp e na propriedade Name por ordem descendente sem o antepassado ativado. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: DESC, Name: DESC) ANCESTOR: NONE VALUES: (16500000000000001, 'Alice') ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), Utilizadores,5000000000000001) |
Entrada de índice composto com antepassado | Entrada de índice para o índice composto na propriedade Timestamp por ordem descendente e na propriedade Name por ordem descendente com o antepassado ativado. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: DESC, Name: ASC) ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), UserList,1, User,5000000000000001 VALUES: (16500000000000001, 'Alice') ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), UserList,1, User,5000000000000001) |
Entrada de índice composto com __key__ |
Entrada de índice para o índice composto na propriedade Timestamp por ordem ascendente e na propriedade __key__ por ordem descendente sem o antepassado ativado. Pode usar __key__ como a propriedade final numa definição de índice para alterar a ordenação predefinida dos resultados. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: ASC, __key__ DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), UserList,1, User,5000000000000001) |
O que se segue?
- Saiba como começar a usar o Key Visualizer.
- Saiba como explorar um mapa térmico em detalhe.
- Leia acerca das métricas que pode ver num mapa térmico.