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 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 Firestore 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 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:

Heißlaufen aufgrund eines erhöhten Zeitstempels

Heatmap mit Hotspots aufgrund eines steigenden 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 Feldname.

Heißlaufen aufgrund zunehmender Feldnamen

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

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 Feld verwendet, z. B. automatisch generierte Rechnungsnummern.

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.

Überblick über die Struktur des Indexschlüssels

Bevor Sie sich mit der Struktur der Indexschlüssel in Key Visualizer vertraut machen Informationen zu Indexen in Firestore.

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.

COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
  PROPERTIES: (Timestamp: DESC) 
  VALUES: (16500000000000001)
  DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001

Wobei:

  • COLLECTION: Speicherort der Sammlung in Ihrer Datenbank. Basierend auf den scope können Sie einen Sammlungspfad für den Sammlungsbereich oder den Sammlungsnamen für des Umfangs der Sammlungsgruppe.
  • PROPERTIES: Felder, die zum Erstellen des Index verwendet werden. Das __name__-Sortierattribut wird nur für Indexdefinitionen angezeigt, die die Standardsortierung ändern.
  • WERTE: Wert jeder Eigenschaft
  • DOCUMENT: ID des Dokuments, das in einem Vorgang aktualisiert wurde.

Ermitteln Sie anhand des Werts PROPERTIES die Felder, 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 Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Indexe.

  4. Rufen Sie den Tab Zusammengesetzt oder Einzelfeld auf.

    Sie können den Indextyp anhand des Felds PROPERTIES ermitteln. Weitere Informationen finden Sie unter Beispiele für Indexschlüssel.

  5. 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 Felder hinzuzufügen.

Nachdem Sie den Index gefunden haben, der Probleme verursacht, können Sie die folgenden Lösungen verwenden:

  • Zusammengesetzter Index: Ändern Sie den Index 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.

  • Einzelfeldindex: Fügen Sie eine Ausnahme für das Feld und die Sortierreihenfolge hinzu, für die Sie eine Ausnahme hinzufügen möchten. Weitere Informationen finden Sie unter Einzelfeldausnahme hinzufügen.

Beispiele für Indexschlüsseleinträge auf der Heatmap

Typ Beschreibung Beispiel
Einzelfeldindexe auf Sammlungsebene, aufsteigend, absteigend Firestore erstellt standardmäßig Indexe mit Sammlungsbereich.

Indexeintrag für den Einzelfeldindex im Feld Timestamp in absteigender Reihenfolge für das Dokument Users/5000000000000001.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Einzelfeldindexe auf Sammlungsebene für Arrayfelder Für jedes Arrayfeld in einem Dokument erstellt und verwaltet Firestore einen Sammlungsbereich-Array-contains-Index.

Indexeintrag für Einzelfeldindexe im Modus „Array enthält“, der erstellt wird, wenn dem Dokument ein Feld Country: [USA, Japan] hinzugefügt wird. Für dieses Feld werden standardmäßig auch ASC,DESC-Indexe erstellt. Das Beispiel zeigt den ASC-Index für das Feld Country.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES:(Country: ASC)
VALUES:([USA, Japan]) DOCUMENT:(projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001)
Einzelfeldindexe für Sammlungsgruppen ASC, DESC, ARRAY Eine Sammlungsgruppe enthält alle Sammlungen mit derselben Sammlungs-ID.
Indexeintrag für den Einzelfeldindex der Sammlungsgruppe für das Feld Timestamp in absteigender Reihenfolge.
COLLECTION GROUP: Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001L)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Einzelfeldindexe für Sammlungsgruppen ASC, DESC, ARRAY Indexeintrag für das Einzelfeld der Sammlungsgruppe für das Feld „Index für Country“ im Modus array-contains COLLECTION GROUP: Users PROPERTIES: (Country: ARRAY ASC) VALUES: (USA) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Eintrag für zusammengesetzten Index einer Sammlung mit den Eigenschaften ASC, ASC und ARRAY Zusammengesetzte Indexeinträge mit übergeordneten Elementen werden erstellt, wenn verschachtelte Dokumente mit einer Sammlungsbereichsindexdefinition erstellt werden.

Indexeintrag für zusammengesetzten Index mit den Feldern Timestamp und Name in aufsteigender Reihenfolge und Country im Modus array-contains.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: ASC, Name: ASC,Country: ARRAY)
VALUES: (16500000000000001L, 'Alice', 'USA')
DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001)
Eintrag in einem zusammengesetzten Index mit Umfang der Sammlungsgruppe mit den Eigenschaften „ASC“, „ASC“ Indexeintrag für den zusammengesetzten Index im Feld Timestamp in aufsteigender Reihenfolge und im Feld Name in aufsteigender Reihenfolge COLLECTION GROUP: Users
PROPERTIES: (Timestamp: ASC, Name: ASC)
VALUES: (16500000000000001L, 'Alice')
DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001)
Indexeintrag für zusammengesetzten Index auf Sammlungsebene mit ASC- und __name__-Attributen Indexeintrag für den zusammengesetzten Index für das Feld Timestamp in aufsteigender Reihenfolge und mit __name__-Sortierung in absteigender Reihenfolge für das Users/5000000000000001-Dokument. Sie können __name__ als letztes Feld in einer Indexdefinition verwenden, um die Standardsortierung der Ergebnisse zu ändern. COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: ASC, __name__ DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001

Nächste Schritte