Cette page présente des exemples de modèles que vous pourriez voir dans une carte de densité Key Visualizer. Ces modèles peuvent vous aider à résoudre des problèmes de performances spécifiques.
Utilisation homogène
Si une carte de densité affiche un mélange finement granuleux de couleurs sombres et lumineuses, les opérations d'écriture/de suppression pour les clés d'index sont réparties de manière homogène dans la base de données. Cette carte de densité représente probablement un modèle d'utilisation efficace pour le mode Datastore.
Index sur des clés séquentielles
Une carte de densité avec une seule ligne brillante en diagonale peut indiquer un indice sur une clé strictement croissante ou décroissante, comme un code temporel. Les index sur les clés séquentielles ne sont pas recommandés et peuvent créer des points d'accès. Dans le hotspotting, vous pouvez observer des latences élevées correspondantes.
Voici quelques exemples de points chauds courants dans l'index:
Hotspot en raison de l'augmentation du code temporel
Dans cet exemple, une carte de densité avec une seule ligne diagonale brillante peut indiquer une base de données qui utilise des opérations d'écriture/de suppression d'index strictement croissantes ou décroissantes sur une propriété de code temporel.
Hotspots dus à l'augmentation du nombre de noms de propriétés
Dans cet exemple, une carte de densité avec une seule ligne brillante en diagonale peut indiquer une base de données qui utilise des opérations d'écriture/suppression d'index strictement croissantes ou décroissantes sur une propriété incrémentielle, telle que des numéros de facture générés automatiquement.
Pour identifier le problème de point chaud, utilisez l'outil Key Visualizer et compréhendez la structure de la clé d'index afin de déterminer quel indice est à l'origine du problème et d'exempter ces indices en suivant les bonnes pratiques.
Comprendre la structure des clés d'index
Avant de comprendre la structure des clés d'index que vous voyez dans l'outil Key Visualizer, découvrez les index en mode Datastore.
Le code suivant montre un exemple de format de clé d'index que vous voyez lorsque vous pointez sur la plage de clés concernée sur la carte de densité.
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)
Où :
- NAMESPACE: espace de noms de l'entité.
- KIND: kind (genre) de l'entité qui la classe dans une catégorie.
- PROPERTIES (PROPRIÉTÉS) : propriétés associées à l'entité. La propriété d'ordre
__key__
ne s'affiche que pour les définitions d'index qui modifient l'ordre par défaut. - ANCESTOR: chemin d'ancêtre facultatif permettant de localiser l'entité dans la hiérarchie de la base de données.
- VALUES: valeur de chaque propriété.
- ENTITY: ID de l'entité mise à jour dans une opération.
Dans l'exemple précédent, identifiez les propriétés à partir de la valeur PROPERTIES pour trouver l'index concerné.
Pour trouver l'index, procédez comme suit:
Accédez à la page Index en mode Datastore dans la console Google Cloud.
Accéder aux index du mode Datastore
Vous pouvez identifier le type d'index en analysant le champ PROPERTIES (PROPRIÉTÉS). Pour en savoir plus, consultez les exemples de clés d'index.
Cliquez sur Filtrer, sélectionnez Champs, puis saisissez le nom du champ.
Utilisez l'opérateur OU pour ajouter d'autres propriétés en cas d'index composites.
Une fois que vous avez identifié l'index à l'origine du problème, vous pouvez utiliser les solutions suivantes:
- Index intégré: excluez la propriété afin que l'index ne gère pas les entrées d'index pour cette propriété. Pour en savoir plus, consultez la section Propriétés exclues.
- Index composite: modifiez l'index dans le fichier
index.yaml
pour vous assurer que le champ dont la valeur augmente ou diminue de façon linéaire n'est pas sélectionné comme premier champ pour l'indexation, ou supprimez l'index. Pour en savoir plus, consultez la section À propos d'index.yaml.
Exemples d'entrées de clé d'index sur la carte de densité
Type | Description | Exemple |
---|---|---|
Entrée d'index intégrée | Entrée d'index pour l'index de propriété unique sur la propriété Timestamp , par ordre décroissant pour l'espace de noms NS . |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'), Utilisateurs, 5000000000000001) |
Entrée d'index intégrée | Entrée d'index pour l'index de propriété unique dans l'espace de noms par défaut. | NAMESPACE: ' ' KIND: Users PROPERTIES: (Timestamp: DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'), Utilisateurs, 5000000000000001) |
Entrée d'index composite | Entrée d'index pour l'index composite sur la propriété Timestamp et la propriété Name , triées par ordre décroissant, sans aïeul activé. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: DESC, Name: DESC) ANCESTOR: NONE VALUES: (16500000000000001, 'Alice') ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), Utilisateurs,5000000000000001) |
Entrée d'index composite avec ancêtre | Entrée d'index pour l'index composite sur la propriété Timestamp par ordre décroissant et la propriété Name par ordre décroissant avec l'ancêtre activé. |
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) |
Entrée d'index composite avec __key__ |
Entrée d'index pour l'index composite sur la propriété Timestamp par ordre croissant et sur __key__ par ordre décroissant, sans aïeul activé. Vous pouvez utiliser __key__ comme propriété finale dans une définition d'index pour modifier l'ordre par défaut des résultats. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: ASC, __key__ DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), UserList,1, User,5000000000000001) |
Étape suivante
- Lisez la présentation Premiers pas avec Key Visualizer.
- Découvrez comment explorer les cartes de densité en profondeur.
- Informez-vous sur les métriques que vous pouvez afficher dans une carte de densité.