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 feine Mischung aus dunklen und hellen Farben zeigt, sind Schreib-/Löschvorgänge für Indexschlüssel gleichmäßig auf 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 sich auf einem Schlüssel befindet, der stark zu- oder abnimmt, z. B. ein Zeitstempel. Indexe für sequenzielle Schlüssel werden nicht empfohlen und können Hotspots erzeugen. Beim Heißlaufen können entsprechende erhöhte Latenzen auftreten.
Hier einige Beispiele für häufige Hotspots im Index:
Heißlaufen aufgrund eines ansteigenden Zeitstempels
In diesem Beispiel kann eine Heatmap mit einer einzelnen hellen diagonalen Linie auf eine Datenbank hinweisen, die für ein Zeitstempelattribut strikt zunehmende oder abnehmende Schreib-/Löschvorgänge für Indexe verwendet.
Heißlaufen aufgrund zunehmender Attributnamen
In diesem Beispiel kann eine Heatmap mit einer einzelnen hellen diagonalen Linie auf eine Datenbank hinweisen, die für ein inkrementelles Attribut wie automatisch generierte Rechnungsnummern strikt zunehmende oder abnehmende Schreib-/Löschvorgänge für Indexe verwendet.
Verwenden Sie das Key Visualizer-Tool und machen Sie sich mit der Indexschlüsselstruktur vertraut, um zu ermitteln, welcher Index das Problem verursacht, und schließen Sie diese Indexe gemäß den Best Practices aus.
Indexschlüsselstruktur
Bevor Sie sich mit der Struktur von Indexschlüsseln im Key Visualizer-Tool vertraut machen, sollten Sie sich mit den Indexen im Datastore-Modus vertraut machen.
Der folgende Code zeigt ein Beispielformat für Indexschlüssel, das Sie sehen, wenn Sie den Mauszeiger auf den betroffenen Schlüsselbereich auf der Heatmap 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 Entität.
- KIND: Art der Entität, die die Entitäten kategorisiert.
- PROPERTIES: Properties, die sich auf die Entität beziehen. Das Sortierungsattribut
__key__
wird nur für Indexdefinitionen angezeigt, die die Standardsortierung ändern. - ANCESTOR: Optionaler Ancestor-Pfad zum Ermitteln der Entität in der Datenbankhierarchie.
- WERTE: Wert jeder Eigenschaft
- ENTITY: ID der Entität, die in einem Vorgang aktualisiert wurde
Ermitteln Sie im vorherigen Beispiel die Attribute im Wert PROPERTIES, um den betroffenen Index zu finden.
So finden Sie den Index:
Rufen Sie in der Google Cloud Console die Seite Indexe im Datastore-Modus auf.
Analysieren Sie das Feld PROPERTIES, um den Indextyp zu ermitteln. Weitere Informationen finden Sie unter Beispiele 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 weitere Attribute für zusammengesetzte Indexe 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 verwaltet. Weitere Informationen finden Sie unter Ausgeschlossene Eigenschaften.
- Zusammengesetzter Index: Ändern Sie entweder den Index in der Datei
index.yaml
, damit 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 Über index.yaml.
Beispiele für Indexschlüsseleinträge auf der Heatmap
Typ | Beschreibung | Beispiel |
---|---|---|
Integrierter Indexeintrag | Indexeintrag für den einzelnen Attributindex des Attributs 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 einzelnen Property-Index im Standard-Namespace. | NAMESPACE: ' ' KIND: Users PROPERTIES: (Timestamp: DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'), Nutzer, 5000000000000001) |
Zusammengesetzter Indexeintrag | Indexeintrag für den zusammengesetzten Index für die Attribute Timestamp und Name in absteigender Reihenfolge ohne aktiviertes Ancestor. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: DESC, Name: DESC) ANCESTOR: NONE VALUES: (16500000000000001, 'Alice') ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), Nutzer,5000000000000001) |
Zusammengesetzter Indexeintrag mit Ancestor | Indexeintrag für den zusammengesetzten Index für das Attribut Timestamp in absteigender Reihenfolge und das Attribut Name in absteigender Reihenfolge mit aktiviertem Ancestor. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: DESC, Name: ASC) ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), Nutzerliste,1, Nutzer,5000000000000001 VALUES: (16500000000000001, 'Alice') ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), Nutzerliste,1, Nutzer,5000000000000001) |
Zusammengesetzter Indexeintrag mit __key__ |
Indexeintrag für den zusammengesetzten Index für das Attribut Timestamp in aufsteigender Reihenfolge und für __key__ in absteigender Reihenfolge ohne aktiviertes Ancestor. Sie können __key__ als letztes Attribut in einer Indexdefinition verwenden, um die Standardsortierung der Ergebnisse zu ändern. |
NAMESPACE: NS KIND: Users PROPERTIES: (Timestamp: ASC, __key__ DESC) ANCESTOR: NONE VALUES: (16500000000000001) ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'), Nutzerliste,1, Nutzer,5000000000000001) |
Nächste Schritte
- Einstieg in Key Visualizer
- Wie Heatmaps im Detail untersucht werden
- Welche Messwerte Sie in einer Heatmap abrufen können