Hot-Tabellenreihen

Damit Sie Leistungsprobleme beheben können, bietet Bigtable die Möglichkeit, häufig genutzte Tabellenzeilen in einem Cluster zu identifizieren und zu beobachten. Auf dieser Seite werden Hot-Tabellenreihen, wie Sie eine Liste Hot-Tabellenreihen abrufen können und Situationen bei der Identifizierung Hot-Tables beschrieben. Bevor Sie diese Seite lesen, sollten Sie sich die Bigtable-Übersicht ansehen.

Der Name der Methode, mit der Sie eine Liste der häufig genutzten Tabellenreihen abrufen, hängt von der verwendeten Sprache ab. Der Einfachheit halber lautet die Methode in diesem Dokument auf den der RPC Cloud Bigtable Admin API-Name ListHotTablets verweist. So erhalten Sie eine Liste der häufig genutzten Tabellenreihen:

Die Ermittlung von Hot-Tabellenreihen kann bei den folgenden Aufgaben helfen:

Hot-Tabellenreihen verstehen

Eine Bigtable-Tabelle ist in Blöcke von fortlaufenden Zeilen unterteilt, die als Tabellenreihen bezeichnet werden. Jede Tabellenreihe ist einem Knoten zugeordnet und Vorgänge auf diesen Zeilen werden auf dem Knoten ausgeführt. Zur Optimierung der Leistung werden Tabellenreihen je nach Zugriffsmustern aufgeteilt oder auf einen anderen Knoten verschoben. Basierend auf Muster für den Nutzerzugriff – Lese-, Schreib- und Scanvorgänge – werden Tabellenreihen auf die Knoten neu verteilt. Weitere Informationen zum Load-Balancing finden Sie unter Datenoptimierung im Zeitverlauf.

Eine Hot-Tabellenreihe ist eine Tabellenreihe, die eine übermäßige Auslastung der Knoten-CPU aufweist, da die Tabellenreihe einen unverhältnismäßig hohen Prozentsatz an CPU verwendet als andere Tabellenreihen. Diese unausgeglichene Knotennutzung kann zu Latenz- und Replikationsverzögerungen führen.

Die häufigsten Ursachen für Hot-Tabellenreihen sind Hotspots, die auftreten, wenn Ihre Anwendung häufig auf Zeilen zugreift, die sich in der Tabelle nahe beieinander befinden. Hotspots sind oft das Ergebnis eines Schemadesigns, das nicht für die Verteilung der Zugriffsmuster Ihrer Anwendung auf die Tabelle optimiert ist. Wie Sie Ihre Zeilenschlüssel so konfigurieren, dass keine Hotspots auftreten, erfahren Sie unter Best Practices für Schemadesign.

Wenn Sie eine Liste der Hot-Tabellenreihen abrufen möchten, müssen Sie einer Rolle mit der Berechtigung bigtable.viewer zugewiesen sein.

Ausgabe

Die Methode ListHotTablets gibt die folgenden Daten für einen bestimmten Cluster in einer Instanz zurück.

  • Name der Tabellenreihe. Die eindeutige ID, die Bigtable der Hot-Tabellenreihen zugewiesen. Dieses Feld wird in der gcloud CLI nicht angezeigt.
  • Tabelle. Die ID der Tabelle, die mit dem Hot-Tabellenreihen verknüpft ist.
  • CPU-Nutzung. Die durchschnittliche CPU-Auslastung des Knotens, der der Hot-Tabellenreihe zugeordnet ist, ausgedrückt als Prozentsatz während dieses 1-Minuten-Intervalls. Dieser Prozentsatz ist der Durchschnitt der Summe der Schreib-CPU und Lese-CPU von Startzeit bis Ende.
  • Startzeit. Die Startzeit des Hot-Tabellenreihenzeitraums.
  • Ende. Die Endzeit des Hot-Tabellenreihenzeitraums.
  • Startschlüssel. Der erste Zeilenschlüssel in der Hot-Tabellenreihe.
  • Endschlüssel: Der letzte Zeilenschlüssel in der Hot-Tabellenreihe. Wenn Start- und Endschlüssel identisch sind, wird das Suffix \000 angehängt, was bedeutet, dass das Tablet eine einzige Zeile umfasst.

Schlüssel werden lexikografisch in einer Tabellenreihe sortiert, sodass jeder Schlüssel zwischen dem Startschlüssel und dem Endschlüssel in dieser Hot-Tabellenreihe enthalten ist.

Hotspots werden bei einer Auflösung von einer Minute berechnet und eine Tabellenreihe wird möglicherweise wieder in der Ausgabe angezeigt. Mit anderen Worten kann eine einzelne Tabellenreihe mehrere Minuten lang „hot” sein.

Standardmäßig durchsucht ListHotTablets die letzten 24 Stunden. Geben Sie eine Start- und Endzeit an, um innerhalb eines bestimmten Zeitraums zu suchen.

Es werden maximal 50 Hot-Tabellenreihen zurückgegeben. Geben Sie eine Seitengröße an, um diese Einstellung zu ändern.

Die Methode gibt eine leere Liste zurück, wenn keine der Tabellen im Cluster hot ist.

Beispiel mit der gcloud CLI

Bevor Sie dieses Beispiel kopieren, installieren Sie die gcloud CLI.

Führen Sie den Befehl hot-tablets list in Cloud Shell oder im lokalen Terminalfenster aus, um eine Liste der häufig genutzten Tabellen für einen bestimmten Cluster aufzurufen.

  gcloud bigtable hot-tablets list CLUSTER_ID --instance INSTANCE_ID

Ersetzen Sie Folgendes:

  • CLUSTER_ID: Die permanente Kennzeichnung des Clusters
  • INSTANCE_ID: Die permanente Kennzeichnung der Instanz

Bei Hot-Tabellenreihen im Cluster zeigt das Terminal eine Ausgabe ähnlich der folgenden an. Hot-Tabellenreihen werden in einem Cluster in absteigender Reihenfolge der CPU-Nutzung aufgelistet.

TABLE      CPU_USAGE  START_TIME                 END_TIME                   START_KEY            END_KEY
test-data  89.3       2021-12-14T01:19:57+00:00  2021-12-14T01:20:57+00:00  user29333893046…    user29333893046…
test-data  22.8       2021-12-14T01:04:59+00:00  2021-12-14T01:06:59+00:00  user29333893046…    user29345657428…
test-data  20.9       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user54519105346…    user545293
test-data  16.5       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user49196524328…    user49206

Anwendungsfälle für Hot-Tabellenreihendaten

Durch die Identifizierung von Hot-Tabellenreihen in einem Cluster können Sie Leistungsprobleme beheben. Sie können die Methode ListHotTablets in Kombination mit anderen Monitoring-Tools wie die Key Visualizer Diagnosetool für Bigtable.

Problematische Zeilenschlüssel identifizieren

Sie können ListHotTablets verwenden, um bestimmte Zeilenschlüssel und Zeilenbereiche zu identifizieren. Dies kann Zugriff auf Muster ermöglichen, die zu Hotspots führen können.

Angenommen, das Zeilenschlüsselschema einer Tabelle lautet [user_id]#[event_timestamp], die Nutzer-IDs und Zeitstempel sind durch ein Hash-Symbol getrennt. Mit einer Liste mit häufig genutzten Tabellenreihen können Sie feststellen, ob bestimmte Nutzer-IDs oder Ereigniszeitstempel Hotspots verursachen. Wenn Sie die Zugriffsmuster ermitteln, können Sie weitere Maßnahmen ergreifen, z. B. den Zeilenschlüssel oder die Tabellen neu gestalten, um die Nutzung gleichmäßiger über den Schlüsselbereich zu verteilen. Wenn die Nutzer-IDs in diesem Beispiel kontinuierlich ansteigen und aus diesem Grund Hotspots verursachen, können Sie Nutzer-IDs in einer anderen Reihenfolge zuweisen oder stattdessen UUID (Universally Unique Identifiers) verwenden.

Wenn Start- und Endzeilenschlüssel identisch sind und der Endzeilenschlüssel angehängt ist mit dem Suffix \000 wird eine einzeilige Tabellenreihe erstellt. Wenn dieses Tablet unverhältnismäßig viel Traffic erhält, kommt es zu Hotspots.

Hotspots mit Genauigkeit auf Minutenebene beobachten

Sie können eine Liste der häufig genutzten Tabellenreihen in Kombination mit den Heatmaps von Key Visualizer verwenden. Key Visualizer ist zwar ein gutes Tool, um das Gesamtbild der Zugriffsmuster für Schlüsselbereiche zu beobachten, ListHotTablets bietet jedoch eine höhere Granularität.

Nach der Untersuchung von Heatmaps in Key Visualizer können Sie bestimmte Hotspots weiter untersuchen. Da Key Visualizer über mehrere Wochen ausgeführt wird, werden die Daten für Hotspots in 15-Minuten-Intervallen zusammengefasst. Darüber hinaus können im gleichen Key Visualizer-Schlüsselbereich mehrere Tabellenreihen kombiniert werden.

Nachdem Sie Key Visualizer zum Ermitteln des Zeitraums verwendet haben, in dem die Hotspots aufgetreten sind, können Sie ListHotTablets für eine größere Granularität sowohl im Schlüssel- als auch im Zeitbereich ausführen. Eine höhere Granularität ist besonders nützlich für die zeitliche Nutzung. ListHotTablets kann kurzlebige Hotspots identifizieren, die Key Visualizer nicht nutzen kann.

Problematische Tabellen in einem Cluster identifizieren

Da Key Visualizer auf Tabellenebene arbeitet, ist es nicht immer die beste Wahl, um ein Problem in einem Cluster mit mehreren Tabellen zu beheben. ListHotTablets wird auf Clusterebene ausgeführt, sodass Sie damit Tabellen mit hoher CPU-Auslastung identifizieren und das Problem eingrenzen können.

Nächste Schritte