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
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. Es probable que este mapa de calor represente un patrón de uso eficaz de Firestore.
Í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
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 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 de Firestore.
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.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Donde:
- COLLECTION: ubicación de la colección en tu base de datos. En función del ámbito, puede ser la ruta de la colección en el caso del ámbito de la colección o el nombre de la colección en el caso del ámbito del grupo de colecciones.
- PROPERTIES: campos que se usan para crear el índice. La propiedad de ordenación
__name__
solo se muestra en las definiciones de índice que modifican el orden predeterminado. - VALUES: valor de cada propiedad.
- DOCUMENT: 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, sigue estos pasos:
En la Google Cloud consola, ve a la página Bases de datos.
Seleccione la base de datos que necesite de la lista de bases de datos.
En el menú de navegación, haga clic en Índices.
Ve a la pestaña Compuesto o Campo único.
Puede identificar el tipo de índice analizando el campo PROPERTIES. Consulta ejemplos de claves de índice para obtener más información.
Haz clic en Filtrar, selecciona Campos e introduce el nombre del campo.
Usa el operador OR para añadir más campos en el caso de los índices compuestos.
Una vez que haya identificado el índice que está causando problemas, puede usar las siguientes soluciones:
Índice compuesto: modifique el índice para asegurarse de que el campo cuyo valor aumenta o disminuye de forma monótona no se selecciona como el primer campo para la indexación, o bien elimine el índice.
Índice de un solo campo: añade una exención para el campo y el orden de clasificación que quieras eximir. Para obtener más información, consulta Añadir una exención de un solo campo.
Ejemplos de entradas de claves de índice en el mapa de calor
Tipo | Descripción | Ejemplo |
---|---|---|
Índices de campo único ASC y DESC con permiso de colección | Firestore crea índices con el permiso de colección de forma predeterminada. Entrada de índice del índice de campo único del 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 de ámbito de colección para campos de matriz | Por cada campo de matriz de un documento, Firestore crea y mantiene un índice array-contains de ámbito de colección. Entrada de índice para índices de campo único en modo array-contains que se creará cuando se añada un campo Country: [USA, Japan] al documento. Ten en cuenta que también se crearán índices ASC y DESC de forma predeterminada para este campo. En el ejemplo se muestra el índice ASC del 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 de grupo de colecciones ASC, DESC y ARRAY | Un grupo de colecciones incluye todas las colecciones que tienen el mismo ID de colección. Entrada de índice del índice de un solo campo 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 de grupo de colecciones ASC, DESC y ARRAY | Entrada de índice del índice de campo único del grupo de colecciones 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 principal se crean cuando se crean documentos anidados con una definición de índice de ámbito de colección. Entrada de índice de í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 permiso de grupo de colecciones y propiedades ASC y ASC | Entrada de índice del índice compuesto en el campo Timestamp , en orden ascendente, y en 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 permiso de colección con propiedades ASC y __name__ |
Entrada de índice del í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 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 |
Siguientes pasos
- Consulta cómo empezar a usar Key Visualizer.
- Consulta cómo analizar un mapa de calor en detalle.
- Consulta las métricas que puedes ver en un mapa de calor.