Einführung in geclusterte Tabellen

Dieses Dokument enthält eine Übersicht über das Tabellen-Clustering in BigQuery.

Übersicht

Wenn Sie eine geclusterte Tabelle in BigQuery erstellen, werden die Tabellendaten automatisch basierend auf dem Inhalt einer oder mehrerer Spalten im Tabellenschema organisiert. Die von Ihnen angegebenen Spalten werden für die Zusammenstellung verwandter Daten verwendet. Wenn Sie eine Tabelle mit mehreren Spalten clustern, ist die Reihenfolge der von Ihnen angegebenen Spalten wichtig. Die Reihenfolge der angegebenen Spalten bestimmt die Sortierreihenfolge der Daten.

Clustering kann die Leistung bestimmter Abfragetypen verbessern, z. B. Abfragen, die Filterklauseln verwenden, und Abfragen, die Daten aggregieren. Wenn Daten von einem Abfrage- oder Ladejob in eine geclusterte Tabelle geschrieben werden, sortiert BigQuery die Daten anhand der Werte in den Clustering-Spalten. Mithilfe dieser Werte werden die Daten in mehreren Blöcken im BigQuery-Speicher organisiert. Wenn Sie eine Abfrage mit einer Klausel senden, die Daten anhand der Clustering-Spalten filtert, verwendet BigQuery die sortierten Blöcke, um das unnötige Scannen von Daten zu vermeiden. Wenn die Tabelle oder Partition unter 1 GB liegt, wird die Abfrageleistung zwischen einer geclusterten und nicht geclusterten Tabelle möglicherweise nicht deutlich.

Wenn Sie eine Abfrage senden, die Daten anhand der Werte in den Clustering-Spalten aggregiert, wird die Leistung verbessert, da die sortierten Blöcke für eine Zusammenstellung von Zeilen mit ähnlichen Werten sorgen.

Wann sollte Clustering verwendet werden?

BigQuery unterstützt das Clustering sowohl für partitionierte als auch für nicht partitionierte Tabellen.

Verwenden Sie Clustering unter folgenden Umständen:

  • Für die Abfrage ist keine strikte Kostengarantie erforderlich.
  • Sie benötigen mehr Granularität, als die Partitionierung allein zulässt. Wenn Sie zusätzlich zu den Partitionierungsvorteilen Clustering-Vorteile erhalten möchten, können Sie für die Partitionierung und das Clustering dieselbe Spalte verwenden.
  • Ihre Abfragen verwenden häufig Filter oder eine Zusammenfassung für mehrere bestimmte Spalten.

Unter den folgenden Umständen sollten Sie die Partitionierung verwenden:

  • Für die Ausführung der Abfrage benötigen Sie strikte Kostengarantien.
  • Sie benötigen eine Verwaltung auf Partitionsebene. Beispielsweise müssen Sie die Ablaufzeit für Partitionen und keine Ablaufzeit für Tabellen festlegen.
  • Sie möchten angeben, wie die Daten partitioniert werden und welche Daten jede Partition enthält. Sie können beispielsweise eine Granularität definieren oder die Bereiche definieren, die zum Partitionieren der Tabelle für die Ganzzahlbereichs-Partitionierung verwendet werden.

Unter den folgenden Umständen sollten Sie Clustering gegenüber einer Partitionierung bevorzugen:

  • Die Partitionierung führt zu einer kleinen Datenmenge pro Partition (ungefähr weniger als 1 GB).
  • Die Partitionierung führt zu einer großen Anzahl von Partitionen, die über die Limits für partitionierte Tabellen hinausgehen.
  • Die Partitionierung führt dazu, dass die Mehrheit der Partitionen in der Tabelle häufig geändert wird (z. B. alle paar Minuten).

Wenn Sie Clustering und Partitionierung zusammen verwenden, können die Daten nach einer Datums- oder Zeitstempelspalte partitioniert und dann in einer anderen Gruppe von Spalten geclustert werden. In diesem Fall werden Daten in den einzelnen Partitionen anhand der Werte der Clustering-Spalten geclustert. Die Partitionierung bietet eine Möglichkeit, genaue Kostenschätzungen für Abfragen zu erhalten (basierend auf den durchsuchten Partitionen).

Partitionierte Tabellen clustern

In einer partitionierten Tabelle werden Daten in physischen Blöcken gespeichert, die jeweils eine Datenpartition enthalten. Eine partitionierte Tabelle verwaltet diese Attribute für alle Vorgänge, die sie ändern: Abfragejobs, DML-Anweisungen (Data Manipulation Language, Datenbearbeitungssprache), DDL-Anweisungen (Data Definition Language, Datendefinitionssprache), Ladejobs und Kopierjobs. Dafür muss BigQuery mehr Metadaten verwalten als eine nicht partitionierte Tabelle. Mit zunehmender Anzahl der Partitionen erhöht sich der Metadatenaufwand.

Obwohl mehr Metadaten verwaltet werden müssen, kann BigQuery die von einer Abfrage verarbeiteten Byte vor der Ausführung genauer schätzen, indem die Daten global partitioniert werden. Diese Kostenberechnung bietet eine Obergrenze für die endgültigen Kosten der Abfrage.

In einer geclusterten Tabelle sortiert BigQuery die Daten automatisch anhand der Werte in den Clustering-Spalten und organisiert sie in Speicherblöcken von optimaler Größe. Sie können eine genauere Sortierung durch die Erstellung einer Tabelle erreichen, die geclustert und partitioniert ist. Eine geclusterte Tabelle verwaltet die Sortiereigenschaften im Kontext jedes Vorgangs, der sie ändert. Daher ist BigQuery möglicherweise nicht in der Lage, die von der Abfrage verarbeiteten Byte oder die Abfragekosten genau zu schätzen. Wenn Datenblöcke während einer Abfrage gelöscht werden, bietet BigQuery die bestmögliche Reduzierung der Abfragekosten.

Automatisches Re-Clustering

Beim Einfügen von Daten in eine geclusterte Tabelle können die neu eingefügten Daten in Blöcke geschrieben werden, die Schlüsselbereiche enthalten. Diese können sich mit den Schlüsselbereichen in zuvor geschriebenen Blöcken überschneiden. Durch diese sich überschneidenden Schlüssel verschlechtert sich die Sortierbarkeit der Tabelle.

BigQuery führt im Hintergrund ein automatisches Re-Clustering durch, um die Sortierbarkeit der Tabelle wiederherzustellen. So bleiben die Leistungsmerkmale einer geclusterten Tabelle erhalten. Bei partitionierten Tabellen wird das Clustering für Daten im Bereich jeder Partition beibehalten.

Kontingente und Beschränkungen geclusterter Tabellen

Wenn Sie die Funktion für geclusterte Tabellen mit einer partitionierten Tabelle verwenden, gelten die Beschränkungen für partitionierte Tabellen.

Kontingente und Beschränkungen gelten auch für die verschiedenen Arten von Jobs, die für geclusterte Tabellen ausgeführt werden können, einschließlich:

Weitere Informationen zu allen Kontingenten und Limits finden Sie unter Kontingente und Limits.

Preise für geclusterte Tabellen

Wenn Sie geclusterte Tabellen in BigQuery erstellen und verwenden, hängen die Kosten davon ab, welche Datenvolumen in den Tabellen und Partitionen gespeichert werden und welche Abfragen für die Daten ausgeführt werden:

  • Informationen zu den Preisen für Speicher finden Sie unter Speicherpreise.
  • Informationen zu den Preisen für Abfragen finden Sie unter Abfragepreise.

Viele Vorgänge für geclusterte Tabellen werden nicht berechnet, darunter das Laden von Daten in geclusterte Tabellen, das Kopieren von Tabellen und Partitionen sowie das Exportieren von Daten. Diese Vorgänge unterliegen den Kontingenten und Limits von BigQuery. Weitere Informationen zu allen kostenlosen Vorgängen finden Sie auf der Seite mit den Preisen unter Kostenlose Vorgänge.

Ein detailliertes Beispiel für die Preise von geclusterten Tabellen finden Sie auf der Seite BigQuery-Preise.

Tipp