En esta página, se muestran ejemplos de los patrones que podrías 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
Si en un mapa de calor se muestra una mezcla detallada de colores oscuros y brillantes, significa que las operaciones de escritura o eliminación de claves de índice están distribuidas de manera uniforme en la base de datos. Es probable que este mapa de calor represente un patrón de uso efectivo para el modo Datastore.
Índices en claves secuenciales
Un mapa de calor con una sola línea diagonal brillante puede indicar un índice en una clave que aumenta o disminuye de forma estricta, como una marca de tiempo. No se recomiendan los índices en claves secuenciales, ya que pueden crear hotspots. Cuando se producen hotspots, es posible que observes latencias elevadas correspondientes.
A continuación, se incluyen algunos ejemplos de puntos de interés comunes en el índice:
Hotspotting 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 propiedades
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 facturas generados automáticamente.
Para identificar el problema de generación de hotspots, usa la herramienta Key Visualizer y comprende la estructura de la clave de índice para determinar qué índice causa el problema y eximir esos índices con las prácticas recomendadas.
Comprende la estructura de la clave de índice
Antes de comprender la estructura de las claves de índice que ves en la herramienta Key Visualizer, obtén información sobre los índices en el modo Datastore.
En el siguiente código, se muestra un ejemplo del formato de la clave de índice que ves cuando colocas el cursor sobre el rango 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)
Aquí:
- NAMESPACE: namespace de la entidad.
- KIND: kind de entidad que categoriza las entidades.
- PROPERTIES: properties relacionadas con la entidad. La propiedad de ordenamiento
__key__
solo se muestra para las definiciones de índice que modifican el ordenamiento predeterminado. - ANCESTOR: Es una ruta principal opcional para ubicar la entidad dentro de la jerarquía de la base de datos.
- VALUES: Es el valor de cada propiedad.
- ENTITY: Es el 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, completa los siguientes pasos:
Ve a la página Índices del modo Datastore en la consola de Google Cloud .
Ir a Índices del modo Datastore
Puedes identificar el tipo de índice analizando el campo PROPERTIES. Consulta ejemplos de claves de índice para obtener más información.
Haz clic en Filtro, selecciona Campos y, luego, ingresa el nombre del campo.
Usa el operador OR para agregar más propiedades en el caso de los índices compuestos.
Después de identificar el índice que causa problemas, puedes usar las siguientes soluciones:
- Índice integrado: Excluye la propiedad de modo que el índice no mantenga entradas de índice para esa propiedad. Consulta Propiedades excluidas para obtener más información.
- Índice compuesto: Modifica el índice en el archivo
index.yaml
para asegurarte de que el campo cuyo valor aumenta o disminuye de forma monotónica no se seleccione como el primer campo para la indexación, o bien borra el índice. Consulta Acerca de index.yaml para obtener más información.
Ejemplos de entradas de claves de índice en el mapa de calor
Tipo | Descripción | Ejemplo |
---|---|---|
Entrada de índice integrada | Entrada de índice para el índice de propiedad única en 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 para el í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 para el índice compuesto en 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 elemento superior | Entrada de índice para el índice compuesto en la propiedad Timestamp en orden descendente y 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 para el índice compuesto en la propiedad Timestamp en orden ascendente y la propiedad __key__ en orden descendente sin el ancestro habilitado. Puedes usar __key__ como la 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) |
¿Qué sigue?
- Aprende cómo comenzar a usar Key Visualizer.
- Descubre cómo analizar un mapa de calor en detalle.
- Obtén información sobre las métricas que puedes ver en un mapa de calor.