Patrones de mapa de calor para claves de índice

En esta página se muestran ejemplos de patrones que puedes ver en un mapa de calor de Key Visualizer. Estos patrones pueden ayudarte a solucionar problemas de rendimiento específicos.

Uso distribuido de manera uniforme

Mapa de calor que muestra lecturas y escrituras distribuidas de forma uniforme

Si un mapa de calor muestra una mezcla detallada de colores oscuros y claros, las operaciones de escritura o eliminación de claves de índice se distribuyen de forma uniforme por toda la base de datos. Este mapa de calor probablemente representa un patrón de uso eficaz del modo Datastore.

Índices de claves secuenciales

Un mapa de calor con una sola línea diagonal brillante puede indicar un índice que se encuentra en una clave que aumenta o disminuye estrictamente, como una marca de tiempo. No se recomiendan los índices en claves secuenciales, ya que pueden crear puntos de acceso. Cuando compartas la conexión a Internet, puede que observes latencias elevadas.

Estos son algunos ejemplos de puntos de acceso habituales en el índice:

Hotspotting debido al aumento de la marca de tiempo

Mapa de calor que muestra los puntos de acceso debido al aumento de la marca de tiempo

En este ejemplo, un mapa de calor con una sola línea diagonal brillante puede indicar una base de datos que usa operaciones de escritura o eliminación de índices estrictamente crecientes o decrecientes en una propiedad de marca de tiempo.

Hotspotting debido al aumento de los nombres de las propiedades

Mapa de calor que muestra puntos de acceso debido al aumento de la propiedad

En este ejemplo, un mapa de calor con una sola línea diagonal brillante puede indicar una base de datos que usa operaciones de escritura o eliminación de índices estrictamente crecientes o decrecientes en una propiedad incremental, como los números de factura generados automáticamente.

Para identificar el problema de hotspotting, usa la herramienta Key Visualizer y consulta la estructura de la clave de índice para determinar qué índice causa el problema y excluye esos índices con las prácticas recomendadas.

Estructura de la clave de índice

Antes de entender la estructura de las claves de índice que se muestran en la herramienta Key Visualizer, consulta información sobre los índices en el modo Datastore.

El siguiente código muestra un ejemplo de formato de clave de índice que se ve al colocar el cursor sobre el intervalo de claves afectado en el mapa de calor.

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)

Donde:

  • NAMESPACE: namespace de la entidad.
  • KIND tipo de entidad que categoriza las entidades.
  • PROPERTIES: properties relacionadas con la entidad. La propiedad de ordenación __key__ solo se muestra en las definiciones de índice que modifican el orden predeterminado.
  • ANCESTOR: ruta del elemento superior opcional para localizar la entidad en la jerarquía de la base de datos.
  • VALUES: valor de cada propiedad.
  • ENTITY: ID de la entidad actualizada en una operación.

En el ejemplo anterior, identifica las propiedades del valor PROPERTIES para encontrar el índice afectado.

Para encontrar el índice, sigue estos pasos:

  1. Ve a la página Índices del modo Datastore de la consola de Google Cloud .

    Ir a Índices del modo Datastore

    Puede identificar el tipo de índice analizando el campo PROPERTIES. Consulta ejemplos de claves de índice para obtener más información.

  2. Haz clic en Filtrar, selecciona Campos e introduce el nombre del campo.

    Usa el operador OR para añadir más propiedades en el caso de los índices compuestos.

Una vez que hayas identificado el índice que está causando problemas, puedes usar las siguientes soluciones:

  • Índice integrado: excluye la propiedad para que el índice no mantenga entradas de índice para esa propiedad. Consulta más información sobre las propiedades excluidas.
  • Índice compuesto: modifique el índice del archivo index.yaml para asegurarse de que el campo cuyo valor aumenta o disminuye de forma monótona no se haya seleccionado como el primer campo de indexación, o bien elimine el índice. Consulta más información sobre index.yaml.

Ejemplos de entradas de claves de índice en el mapa de calor

Tipo Descripción Ejemplo
Entrada de índice integrada Entrada de índice del índice de una sola propiedad de la propiedad Timestamp, en orden descendente para el espacio de nombres NS. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),Usuarios, 5000000000000001)
Entrada de índice integrada Entrada de índice del índice de una sola propiedad en el espacio de nombres predeterminado. NAMESPACE: ' '
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),Usuarios, 5000000000000001)
Entrada de índice compuesto Entrada de índice del índice compuesto de la propiedad Timestamp y la propiedad Name en orden descendente sin el ancestro habilitado. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC, Name: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001, 'Alice')
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),Usuarios,5000000000000001)
Entrada de índice compuesto con antecesor Entrada de índice del índice compuesto de la propiedad Timestamp en orden descendente y de la propiedad Name en orden descendente con el ancestro habilitado. 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 compuesto con __key__ Entrada de índice del índice compuesto de la propiedad Timestamp en orden ascendente y de la propiedad __key__ en orden descendente sin el ancestro habilitado. Puede usar __key__ como propiedad final en una definición de índice para cambiar el orden predeterminado de los 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)

Siguientes pasos