Patrones de mapa de calor para las claves de índice
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 de Firestore.
Í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 un nombre de campo de marca de tiempo.
Hotspotting debido al aumento de los nombres de los campos
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 un campo incremental, como 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 Firestore.
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.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Aquí:
- COLLECTION: Es la ubicación de la colección en tu base de datos. Según el alcance, puede ser la ruta de la colección para el alcance de la colección o el nombre de la colección para el alcance del grupo de colecciones.
- PROPERTIES: Son los campos que se usan para crear el índice. La propiedad de ordenamiento
__name__
solo se muestra para las definiciones de índice que modifican el ordenamiento predeterminado. - VALUES: Es el valor de cada propiedad.
- DOCUMENT: Es el ID del documento actualizado en una operación.
En el ejemplo anterior, identifica los campos del valor PROPERTIES para encontrar el índice afectado.
Para encontrar el índice, completa los siguientes pasos:
En la consola de Google Cloud , ve a la página Bases de datos.
Selecciona la base de datos requerida de la lista.
En el menú de navegación, haz clic en Índices.
Ve a la pestaña Compuestos o De campo único.
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 campos en el caso de los índices compuestos.
Después de identificar el índice que causa problemas, puedes usar las siguientes soluciones:
Índice compuesto: Modifica el índice 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.
Índice de campo único: Agrega una exención para el campo y el orden de clasificación que deseas exentar. Consulta Cómo agregar una exención de un solo campo para obtener más información.
Ejemplos de entradas de claves de índice en el mapa de calor
Tipo | Descripción | Ejemplo |
---|---|---|
Índices de campo único con alcance de la colección ASC y DESC | De forma predeterminada, Firestore crea índices con alcance de colección. Entrada de índice para el índice de campo único en el campo Timestamp , en orden descendente para el 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 con alcance de colección para campos de array | En cada campo de array de un documento, Firestore crea y mantiene un índice de contenido de array con alcance de colección. Entrada de índice para índices de campo único en modo array-contains que se crearán cuando se agregue un campo Country: [USA, Japan] al documento. Ten en cuenta que los índices ASC y DESC también se crearán de forma predeterminada para este campo. En el ejemplo, se muestra el índice ASC para el 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 del grupo de colección ASC, DESC, ARRAY | Un grupo de colecciones incluye todas las colecciones con el mismo ID. Entrada de índice para el índice de campo único del grupo de colecciones en el campo Timestamp , en orden descendente. |
COLLECTION GROUP: Users PROPERTIES: (Timestamp: DESC) VALUES: (16500000000000001L) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Índices de campo único del grupo de colección ASC, DESC, ARRAY | Entrada de índice para el índice de campo único del grupo de colección en el campo Country en el modo array-contains |
COLLECTION GROUP: Users PROPERTIES: (Country: ARRAY ASC) VALUES: (USA) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Entrada de índice compuesto de colección con propiedades ASC, ASC y ARRAY | Las entradas de índice compuesto con elemento superior se crean cuando se crean documentos anidados con una definición de índice de alcance de colección. Entrada de índice para el índice compuesto con los campos Timestamp y Name en orden ascendente, y Country en 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 compuesto con alcance de grupo de colección y propiedades ASC, ASC | Entrada de índice para el índice compuesto en el campo Timestamp , en orden ascendente, y el campo Name en orden ascendente |
COLLECTION GROUP: Users PROPERTIES: (Timestamp: ASC, Name: ASC) VALUES: (16500000000000001L, 'Alice') DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001) |
Entrada de índice compuesto con alcance de colección y propiedades ASC y __name__ |
Entrada de índice para el índice compuesto en el campo Timestamp en orden ascendente y con la ordenación __name__ en orden descendente para el documento Users/5000000000000001 . Puedes usar __name__ como el campo final en una definición de índice para cambiar el orden predeterminado de los 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 |
¿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.