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 über die Datenbank verteilt sind. Diese Heatmap ist wahrscheinlich stellt ein effektives Nutzungsmuster für den Datastore-Modus dar.
Indexe für sequenzielle Schlüssel
Eine Heatmap mit einer einzelnen hellen diagonalen Linie kann einen Index anzeigen, der sich auf einer Schlüssel, der strikt ansteigen oder abnehmen soll, z. B. Zeitstempel. Indexe ein sequenzielle Schlüssel werden nicht empfohlen und können zu Hotspots führen. Beim Heißlaufen können entsprechende erhöhte Latenzen auftreten.
Hier einige Beispiele für häufige Hotspots bei der Indexierung:
Heißlaufen aufgrund eines erhöhten Zeitstempels
In diesem Beispiel kann eine Heatmap mit einer einzelnen hellen diagonalen Linie einen Datenbank, die streng ansteigende oder abnehmende Schreib-/Löschvorgänge für Indexe für einen Zeitstempel verwendet Property.
Heißlaufen aufgrund steigender Unterkunftsnamen
In diesem Beispiel kann eine Heatmap mit einer einzelnen hellen diagonalen Linie einen Datenbank, die streng ansteigende oder abnehmende Schreib-/Löschvorgänge für Indexe für eine zusätzliche Property wie automatisch generierte Rechnungsnummern.
Verwenden Sie das Key Visualizer-Tool und verstehen Sie den Indexschlüssel, um das Heißlaufen-Problem zu identifizieren. Struktur, um zu ermitteln, welcher Index das Problem verursacht, und um diese Indexe auszuschließen mit Best Practices.
Überblick über die Struktur des Indexschlüssels
Bevor Sie sich mit der Struktur der Indexschlüssel in Key Visualizer vertraut machen erhalten Sie Informationen zu Indexen im Datastore-Modus.
Der folgende Code zeigt ein Beispiel für das Format eines Indexschlüssels, das angezeigt wird, wenn Sie den Mauszeiger darauf bewegen. über den betroffenen Tastenbereich auf der Heatmap.
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 Sortierattribut
__key__
wird nur für Indexdefinitionen angezeigt, die die Standardsortierung ändern. - ANCESTOR: Optionaler Ancestor-Pfad zum Finden der Entität innerhalb der Datenbankhierarchie.
- VALUES: Wert jeder Eigenschaft
- ENTITY: ID der Entität, die in einem Vorgang aktualisiert wurde.
Identifizieren Sie im vorherigen Beispiel die Properties der PROPERTIES. -Wert, um den betroffenen Index zu finden.
Führen Sie die folgenden Schritte aus, um den Index zu finden:
Rufen Sie in der Google Cloud Console die Seite Indexe im Datastore-Modus auf.
Indexe im Datastore-Modus aufrufen
Sie können den Indextyp anhand der PROPERTIES angeben. Weitere Informationen finden Sie unter Beispiele für Indexschlüssel. Informationen.
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 gefunden haben, der Probleme verursacht, können Sie die folgenden Lösungen verwenden:
- Integrierter Index: Schließen Sie das Attribut aus, damit der Index nicht für diese Property erstellen. Weitere Informationen finden Sie unter Ausgeschlossene Eigenschaften.
- Zusammengesetzter Index: Ändern Sie den Index in der Datei
index.yaml
so, dass Das Feld, dessen Wert monoton zu- oder abnimmt, wird nicht als das erste Feld zur Indexierung oder löschen Sie den Index. Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter index.yaml.
Beispiele für Indexschlüsseleinträge auf der Heatmap
Typ | Beschreibung | Beispiel |
---|---|---|
Integrierter Indexeintrag | Indexeintrag für den einzelnen Attributindex 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 einzelnen Attributindex 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-Objekt. |
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-Objekt. |
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) |
Zusammengesetzter Indexeintrag mit __key__ |
Indexeintrag für den zusammengesetzten Index für das Attribut Timestamp in aufsteigender Reihenfolge und den __key__ in absteigender Reihenfolge ohne aktiviertes Ancestor-Objekt. 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