Diese Seite zeigt Beispiele für Muster, die in einer Heatmap von Key Visualizer angezeigt werden können. Diese Muster können Ihnen bei der Behebung bestimmter Leistungsprobleme helfen.
Gleichmäßig verteilte Nutzung
Wenn eine Heatmap eine fein strukturierte Mischung aus dunklen und hellen Farben aufweist, dann sind Schreib-/Löschvorgänge für Indexschlüssel gleichmäßig über die Datenbank verteilt. Diese Heatmap stellt wahrscheinlich ein effektives Nutzungsmuster für den Datastore-Modus dar.
Indexe für sequenzielle Schlüssel
Eine Heatmap mit einer einzelnen hellen diagonalen Linie kann auf einen Index hinweisen, der auf einem Schlüssel basiert, der streng monoton steigt oder fällt, z. B. ein Zeitstempel. Indexe für sequenzielle Schlüssel werden nicht empfohlen und können Hotspots erstellen. Beim Hotspoting kann es sein, dass Sie entsprechende erhöhte Latenzen beobachten.
Hier einige Beispiele für häufige Hotspots im Index:
Hotspotting aufgrund eines ansteigenden Zeitstempels
In diesem Beispiel kann eine Heatmap mit einer einzelnen hellen diagonalen Linie auf eine Datenbank hinweisen, die streng aufsteigende oder absteigende Indexschreib-/Löschvorgänge für eine Zeitstempel-Property verwendet.
Hotspotting aufgrund zunehmender Property-Namen
In diesem Beispiel kann eine Heatmap mit einer einzelnen hellen diagonalen Linie auf eine Datenbank hinweisen, die streng aufsteigende oder absteigende Indexschreib-/Löschvorgänge für eine inkrementelle Eigenschaft wie automatisch generierte Rechnungsnummern verwendet.
Verwenden Sie das Key Visualizer-Tool und machen Sie sich mit der Struktur des Indexschlüssels vertraut, um das Hotspotting-Problem zu identifizieren. Ermitteln Sie, welcher Index das Problem verursacht, und schließen Sie diese Indizes mit Best Practices aus.
Struktur des Indexschlüssels
Bevor Sie die Struktur der Indexschlüssel verstehen, die im Key Visualizer-Tool angezeigt werden, sollten Sie sich mit Indexen im Datastore-Modus vertraut machen.
Der folgende Code zeigt ein Beispiel für das Indexschlüsselformat, das angezeigt wird, wenn Sie den Mauszeiger auf der Heatmap auf den betroffenen Schlüsselbereich bewegen.
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)
Wobei:
- NAMESPACE: Namespace der Einheit.
- KIND: Art der Entität, mit der die Entitäten kategorisiert werden.
- PROPERTIES: Attribute, die sich auf die Entität beziehen. Das Attribut
__key__
wird nur für Indexdefinitionen angezeigt, die die Standardreihenfolge ändern. - ANCESTOR: Optionaler Ancestor-Pfad zur Entität innerhalb der Datenbankhierarchie.
- VALUES: Wert der einzelnen Attribute.
- ENTITY: ID der Entität, die in einem Vorgang aktualisiert wurde.
Ermitteln Sie anhand des PROPERTIES-Werts aus dem vorherigen Beispiel den betroffenen Index.
So finden Sie den Index:
Rufen Sie in der Google Cloud Console die Seite Datastore-Modus-Indizes auf.
Sie können den Typ des Index anhand des Felds PROPERTIES ermitteln. Weitere Informationen finden Sie in den Beispielen für Indexschlüssel.
Klicken Sie auf Filter, wählen Sie Felder aus und geben Sie den Namen des Felds ein.
Verwenden Sie den Operator OR, um bei zusammengesetzten Indexen weitere Attribute hinzuzufügen.
Nachdem Sie den Index identifiziert haben, der Probleme verursacht, können Sie die folgenden Lösungen verwenden:
- Integrierter Index: Schließen Sie das Attribut aus, damit der Index keine Indexeinträge für dieses Attribut enthält. Weitere Informationen finden Sie unter Ausgeschlossene Attribute.
- Zusammengesetzter Index: Ändern Sie den Index in der Datei
index.yaml
so, dass das Feld, dessen Wert monoton steigt oder fällt, nicht als erstes Feld für die Indexierung ausgewählt wird, oder löschen Sie den Index. Weitere Informationen finden Sie unter index.yaml.
Beispiele für Indexschlüssel-Einträge in der Heatmap
Typ | Beschreibung | Beispiel |
---|---|---|
Integrierter Indexeintrag | Indexeintrag für den Index für einzelne Attribute für das Attribut Timestamp in absteigender Reihenfolge für den Namespace NS . |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'), Nutzer, 5000000000000001) |
Integrierter Indexeintrag | Indexeintrag für den Index des einzelnen Attributs im Standard-Namespace. | NAMESPACE: ' ' KIND: Users PROPERTIES: (Timestamp: DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'), Nutzer, 5000000000000001) |
Eintrag eines zusammengesetzten Index | Indexeintrag für den zusammengesetzten Index für das Attribut Timestamp und das Attribut Name in absteigender Reihenfolge ohne aktivierte Vorfahren. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: DESC, Name: DESC) ANCESTOR: NONE VALUES: (16500000000000001, 'Alice') ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), Nutzer,5000000000000001) |
Eintrag eines zusammengesetzten Index mit übergeordnetem Element | Indexeintrag für den zusammengesetzten Index für das Attribut Timestamp in absteigender Reihenfolge und das Attribut Name in absteigender Reihenfolge mit aktivierter übergeordneter Entität. |
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) |
Eintrag eines zusammengesetzten Indexes mit __key__ |
Indexeintrag für den zusammengesetzten Index für das Attribut Timestamp in aufsteigender Reihenfolge und das Attribut __key__ in absteigender Reihenfolge ohne aktivierten Vorfahren. Sie können __key__ als letzte Eigenschaft in einer Indexdefinition verwenden, um die Standardreihenfolge der Ergebnisse zu ändern. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: ASC, __key__ DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), UserList,1, User,5000000000000001) |
Nächste Schritte
- Einstieg in Key Visualizer
- Wie Heatmaps im Detail untersucht werden
- Welche Messwerte Sie in einer Heatmap abrufen können