Heatmap-Muster für Indexschlüssel

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

Heatmap, die gleichmäßig verteilte Lese- und Schreibvorgänge zeigt

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

Heatmap, die ein Heißlaufen aufgrund eines zunehmenden Zeitstempels zeigt

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

Heatmap, die das Heißlaufen aufgrund einer ansteigenden Eigenschaft zeigt

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:

  1. 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.

  2. 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