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 auf sequenzielle Schlüssel
Eine Heatmap mit einer einzelnen hellen diagonalen Linie kann auf einen Index hinweisen, der sich auf einen Schlüssel bezieht, der sich streng monoton erhöht oder verringert, z. B. einen Zeitstempel. Indexe auf sequenziellen Schlüsseln werden nicht empfohlen und können Hotspots verursachen. Beim Hotspoting kann es sein, dass Sie entsprechende erhöhte Latenzen beobachten.
Hier einige Beispiele für häufige Hotspots im Index:
Hotspots aufgrund eines zunehmenden Zeitstempels
In diesem Beispiel kann eine Heatmap mit einer einzelnen hellen diagonalen Linie auf eine Datenbank hinweisen, die strikt steigende oder abnehmende Indexschreib-/Löschvorgänge für eine Zeitstempeleigenschaft verwendet.
Hotspots aufgrund zunehmender Property-Namen
In diesem Beispiel kann eine Heatmap mit einer einzelnen hellen diagonalen Linie auf eine Datenbank hinweisen, die streng zunehmende oder abnehmende Indexschreib-/Löschvorgänge für ein inkrementelles Attribut wie automatisch generierte Rechnungsnummern verwendet.
Verwenden Sie das Key Visualizer-Tool, um das Hotspot-Problem zu identifizieren, und ermitteln Sie die Indexschlüsselstruktur, um herauszufinden, welcher Index das Problem verursacht. Befreien Sie diese Indexe dann mithilfe von Best Practices von der Indexierung.
Indexschlüsselstruktur
Bevor Sie sich mit der Struktur der Indexschlüssel im Key Visualizer vertraut machen, sollten Sie sich mit Indexen im Datastore-Modus vertraut machen.
Der folgende Code zeigt ein Beispiel für das Format eines Indexschlüssels, das angezeigt wird, wenn Sie den Mauszeiger auf den betroffenen Schlüsselbereich in 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 des Elements.
- ART: Art der Entität, die die Entitäten kategorisiert.
- PROPERTIES: Properties, die sich auf die Entität beziehen. Die Sortiereigenschaft
__key__
wird nur für Indexdefinitionen angezeigt, die die Standardsortierung ändern. - ANCESTOR: Optionaler Ancestor-Pfad zur Entität innerhalb der Datenbankhierarchie.
- VALUES: Wert der einzelnen Property.
- ENTITY: ID der Entität, die bei einem Vorgang aktualisiert wurde.
Ermitteln Sie anhand des Werts PROPERTIES die Eigenschaften, 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.
Sie können den Indextyp anhand des Felds PROPERTIES 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 ODER, um bei zusammengesetzten Indexen weitere Properties hinzuzufügen.
Nachdem Sie den Index gefunden haben, der Probleme verursacht, können Sie die folgenden Lösungen verwenden:
- Integrierter Index: Das Attribut wird ausgeschlossen, sodass der Index keine Indexeinträge für dieses Attribut enthält. Weitere Informationen finden Sie unter Ausgeschlossene Properties.
- Zusammengesetzter Index: Ändern Sie entweder 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üsseleinträge in der Heatmap
Typ | Beschreibung | Beispiel |
---|---|---|
Integrierter Indexeintrag | Indexeintrag für den Index der einzelnen Property für die Property 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 der einzelnen Property 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 die Property Timestamp und die Property Name in absteigender Reihenfolge ohne aktivierten Vorfahren. |
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 übergeordnetem Element | Indexeintrag für den zusammengesetzten Index für die Property Timestamp in absteigender Reihenfolge und die Property Name in absteigender Reihenfolge mit aktiviertem Vorfahr. |
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 in einem zusammengesetzten Index 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 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'), 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