Übersicht über die spaltenbasierte Engine

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird die spaltenbasierte Engine von AlloyDB Omni beschrieben. Außerdem finden Sie hier eine Anleitung zur Verwendung der Engine in Container- und Kubernetes-Clusterinstallationen. Auf dieser Seite wird davon ausgegangen, dass Sie mit PostgreSQL vertraut sind.

Die spaltenbasierte Engine von AlloyDB Omni beschleunigt die Verarbeitung von Scans, Joins und Aggregaten in SQL-Abfragen durch die folgenden Komponenten:

  • Ein Spaltenspeicher, der Tabellendaten und Daten in der materialisierten Ansicht für ausgewählte Spalten enthält, die in einem spaltenorientierten Format neu organisiert wurden.

  • Ein spaltenorientierter Abfrageplaner und eine spaltenorientierte Ausführungs-Engine, die die Verwendung des Spaltenspeichers in Abfragen unterstützen.

Sie können die spaltenbasierte Engine auf der primären Instanz, einer Lesepoolinstanz oder beiden verwenden. Sie können auch die automatische Spaltenformatierung verwenden, um Ihre Arbeitslast zu analysieren und den Spaltenspeicher automatisch mit den Spalten zu füllen, die die beste Leistungssteigerung bieten.

Wenn Sie die spaltenbasierte Engine für eine bestimmte Abfrage verwenden möchten, müssen alle Spalten, auf die in der Abfrage verwiesen wird, z. B. Joins und Scans, im Spaltenspeicher vorhanden sein.

Standardmäßig ist die spaltenbasierte Engine so konfiguriert, dass 1 GB des Arbeitsspeichers Ihrer Instanz verwendet werden. Je nach Arbeitslast, Arbeitsspeichernutzung und Konfiguration eines Lesepools können Sie die Arbeitsspeicherzuweisung für die spaltenbasierte Engine auf Ihrer primären Instanz reduzieren und der Lesepoolinstanz mehr Arbeitsspeicher zuweisen.

Informationen zum Ansehen und Überwachen der Arbeitsspeichernutzung durch die spaltenbasierte Engine finden Sie unter Arbeitsspeichernutzung des Spaltenspeichers ansehen. Informationen zum Ändern der vom Spaltenspeicher verwendeten Speichergröße finden Sie unter Größe des Spaltenspeichers konfigurieren. Die empfohlene Arbeitsspeichergröße für die spaltenbasierte Engine für Ihre Instanz finden Sie unter Empfohlene Arbeitsspeichergröße für den Spaltenspeicher.

Abfragetypen, die von der spaltenbasierten Engine profitieren

Bestimmte Abfragen können von der spaltenbasierten Engine profitieren. Im Folgenden finden Sie eine Liste der Vorgänge und ihrer Abfragemuster, die am meisten von der spaltenbasierten Engine profitieren:

Vorgang Abfragemuster
Tabellenscan Selektive Filter wie WHERE-Klauseln.
Eine kleine Anzahl von Spalten aus einer größeren Tabelle oder materialisierten Ansicht.
Ausdrücke wie LIKE, SUBSTR oder TRIM.
Aggregationsfunktionen Nur Ausdrücke wie SUM, MIN, MAX, AVG und COUNT.
Am Anfang der Abfrage eines Spaltenscans.
Nicht gruppiert oder nach Spalten gruppiert.
ORDER-BY Nur, wenn sich der Operator am Anfang der Abfrage eines spaltenbasierten Scans befindet.
SORT Nur, wenn sich der Operator am Anfang der Abfrage eines spaltenweisen Scans befindet und nur nach den Basisspalten der Tabelle oder der materialisierten Ansicht sortiert wird.
LIMIT Nur wenn sich der Operator am Anfang der Abfrage eines spaltenweisen Scans und vor allen SORT- oder GROUP BY-Operatoren befindet.
INNER HASH JOIN Nur, wenn die verwendeten Schlüssel Spalten sind und keine Join-Qualifizierer verwendet werden.
Selektive Joins Nur, wenn sich die Joins am Anfang der Abfrage eines spaltenweisen Scans befinden.

Weitere Informationen dazu, welche Abfragen am besten mit der spaltenbasierten Engine funktionieren, ob und wie die spaltenbasierte Engine von einer Abfrage verwendet wurde, finden Sie unter Verwendung der spaltenbasierten Engine mit EXPLAIN überprüfen.

Spaltenbasierte Engine in einer AlloyDB Omni-Instanz verwenden

So verwenden Sie die spaltenbasierte Engine in einer AlloyDB Omni-Instanz:

  1. Aktivieren Sie die Engine auf der Instanz.

    Das Aktivieren des Moduls ist ein einmaliger Vorgang, für den ein Datenbankneustart erforderlich ist.

  2. Fügen Sie dem Spaltenspeicher Spalten hinzu.

    Verwenden Sie eine der folgenden Methoden, um dem Spaltenspeicher Spalten hinzuzufügen:

  3. Mit der Ansicht g_columnar_relations können Sie nachvollziehen, was im Spaltenspeicher enthalten ist. Nachdem Spalten hinzugefügt wurden, können Sie mit der Anweisung EXPLAIN die Verwendung der spaltenbasierten Engine in SQL-Abfragen prüfen.

Eine detaillierte Anleitung zur Verwendung der spaltenbasierten Engine finden Sie unter Spaltenbasierte Engine konfigurieren.

Welche Daten können dem Spaltenspeicher hinzugefügt werden?

Es gibt einige Einschränkungen hinsichtlich der Datentypen und Datenquellen, die Sie verwenden können, wenn Sie dem Spaltenspeicher Spalten hinzufügen.

Unterstützte Datentypen

Die spaltenbasierte Engine unterstützt nur Spalten mit den folgenden integrierten Datentypen:

  • array
  • bigint
  • boolean
  • bytea
  • char
  • date
  • decimal
  • double precision
  • enum
  • float4
  • float8
  • integer
  • json
  • jsonb
  • numeric
  • real
  • serial
  • short
  • smallint
  • text
  • timestamp
  • uuid
  • varchar

Die spaltenbasierte Engine ignoriert alle Versuche, dem Spaltenspeicher manuell Spalten mit nicht unterstützten Datentypen hinzuzufügen.

Nicht unterstützte Datenquellen

Die spaltenbasierte Engine unterstützt keine Tabellen oder materialisierten Ansichten mit den folgenden Attributen als Datenquellen:

  • Nicht-Blatt-partitionierte Tabellen

  • Fremde Tabellen

  • Tabellen oder Ansichten mit weniger als 5.000 Zeilen

Einschränkungen der spaltenbasierten Engine

  • Wenn Sie eine Analyseabfrage für eine Spalte mit einem Index ausführen, kann der AlloyDB Omni-Optimierer den Zeilenspeicher verwenden.
  • Spalten, die dem Spaltenspeicher manuell hinzugefügt wurden, werden nicht automatisch entfernt. Wenn Sie manuell hinzugefügte Spalten erzwingen möchten, verwenden Sie google_columnar_engine_drop in Ihrer Instanz.
  • Bei der automatischen Spaltenorientierung werden Spalten möglicherweise dynamisch hinzugefügt und entfernt, je nachdem, wie sie in Abfragen verwendet werden.
  • Nicht alle Datentypen werden von der spaltenbasierten Engine unterstützt. Weitere Informationen finden Sie unter Unterstützte Datentypen.
  • Häufige Aktualisierungen von Zeilen machen Spaltendaten ungültig. Wenn Sie eine Tabelle oder eine materialisierte Ansicht im Spaltenspeicher validieren möchten, können Sie entweder die Aktualisierungshäufigkeit verringern oder die Aktualisierungen der spaltenbasierten Engine häufiger planen.

    Sie können die Spalten invalid_block_count und total_block_count in g_columnar_relations vergleichen, um zu prüfen, ob Ihre Tabelle oder Ansicht betroffen ist. Wenn sich Ihre Tabelle oder Ansicht häufig oder in großem Umfang ändert, ist der invalid_block_count hoch.

Nächste Schritte