Modèles de carte de densité pour les clés d'index

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

Carte de densité montrant une répartition homogène des lectures et écritures

Si une carte de densité affiche un mélange granulaire de couleurs sombres et lumineuses, alors les opérations d'écriture/suppression pour les clés d'index sont réparties uniformément dans la base de données. Cette carte de densité est probablement représente un modèle d'utilisation efficace pour le mode Datastore.

Index des clés séquentielles

Une carte de densité avec une seule ligne lumineuse en diagonale peut indiquer un indice situé sur une qui augmente ou diminue strictement, comme l'horodatage. Index activé les touches séquentielles ne sont pas recommandées et peuvent créer des zones cliquables. Lors du hotspotting, vous pourriez observer des latences élevées correspondantes.

Voici quelques exemples de points chauds courants dans l'index :

Hotspotting dû à l'augmentation du code temporel

Carte de densité montrant un hotspotting en raison de l'augmentation du code temporel

Dans cet exemple, une carte thermique avec une seule ligne diagonale brillante peut indiquer une base de données qui utilise strictement l'augmentation ou la diminution des opérations d'écriture/suppression d'index sur un code temporel .

Hotspotting dû à l'augmentation du nom des propriétés

Carte de densité montrant le hotspotting en raison de l'augmentation de la propriété

Dans cet exemple, une carte thermique avec une seule ligne diagonale brillante peut indiquer une qui utilise strictement à augmenter ou à diminuer les opérations d'écriture/suppression d'index sur une propriété incrémentielle, comme les 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 dans Key Visualizer découvrez les index en mode Datastore.

Le code suivant montre un exemple de format de clé d'index qui s'affiche lorsque vous pointez sur 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: genre d'entité qui permet de classer les entités.
  • PROPERTIES: propriétés associées à l'entité. La propriété de tri __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.
  • VALEURS: 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 de la section PROPERTIES pour trouver l'index concerné.

Pour trouver l'index, procédez comme suit:

  1. Accédez à la page Index du mode Datastore dans la console Google Cloud.

    Accéder aux index en mode Datastore

    Vous pouvez identifier le type d'index en analysant PROPERTIES. Pour en savoir plus, consultez des exemples de clés d'index. des informations.

  2. Cliquez sur Filtrer, sélectionnez Champs, puis saisissez le nom du champ.

    Utilisez l'opérateur OR pour ajouter d'autres propriétés dans le cas d'index composites.

Une fois que vous avez identifié l'index à l'origine des problèmes, vous pouvez utiliser les solutions suivantes:

  • Index intégré: exclut la propriété pour que l'index ne conserve pas des entrées d'index pour cette propriété. Pour en savoir plus, consultez 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 le premier champ pour l'indexation, ou supprimer l'index. Voir Pour en savoir plus, consultez la page À propos de 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 de la propriété Timestamp, dans l'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 dans l'ordre décroissant, sans ancêtre 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 de la propriété Timestamp dans l'ordre décroissant et la propriété Name dans l'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