Spaltenbasierte Engine in AlloyDB Omni konfigurieren

Auf dieser Seite wird beschrieben, wie Sie die spaltenorientierte Engine in einem AlloyDB Omni-Datenbankcluster aktivieren oder deaktivieren. Außerdem erfahren Sie, wie Sie eine geeignete Anfangsgröße für den Spaltenspeicher konfigurieren.

Informationen zur Verwendung der spaltenorientierten Engine bei der Verwendung von AlloyDB for PostgreSQL in der Google Cloudfinden Sie unter Spaltenorientierte Engine konfigurieren.

Eine konzeptionelle Übersicht über die AlloyDB-Spalten-Engine finden Sie unter Spalten-Engine von AlloyDB.

Spaltenbasierte Engine aktivieren

Wenn Sie die spaltenorientierte Engine für eine Instanz verwenden möchten, setzen Sie das Flag google_columnar_engine.enabled der Instanz auf on.

So legen Sie dieses Flag für eine Instanz fest:

  1. Führen Sie den PostgreSQL-Befehl ALTER SYSTEM aus:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. Wenn Sie die Konfiguration der spaltenorientierten Engine anpassen möchten, folgen Sie der Anleitung im nächsten Abschnitt, bevor Sie den Datenbankserver neu starten. Andernfalls führen Sie die nächsten beiden Schritte aus, um den Datenbankserver jetzt neu zu starten.

  3. Halten Sie den Datenbankserver an.

  4. Starten Sie den Datenbankserver.

Größe des Spaltenspeichers konfigurieren

Wenn die spaltenbasierte Engine auf einer Instanz aktiviert ist, weist AlloyDB einen Teil des Arbeitsspeichers der Instanz zu, um die spaltenbasierten Daten zu speichern. Wenn Sie Ihrem Spaltenspeicher speziellen Hochgeschwindigkeits-RAM zuweisen, kann AlloyDB so schnell wie möglich auf die spaltenbasierten Daten zugreifen.

Mit dem Flag google_columnar_engine.memory_size_in_mb können Sie auch eine feste und bestimmte Größe für die Zuweisung festlegen.

So legen Sie dieses Flag für eine Instanz fest:

  1. Führen Sie den PostgreSQL-Befehl ALTER SYSTEM aus:

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;
    

    Ersetzen Sie COLUMN_STORE_SIZE durch die neue Größe des Spaltenspeichers in Megabyte.

  2. Halten Sie den Datenbankserver an.

  3. Starten Sie den Datenbankserver.

Vektorbasierten Join aktivieren

Die spaltenbasierte Engine bietet die Funktion Vektorisierter Join, mit der sich die Leistung von Joins verbessern lässt, indem die vektorisierte Verarbeitung auf geeignete Abfragen angewendet wird.

Nachdem Sie den vektorisierten Join aktiviert haben, kann der AlloyDB-Abfrageplaner den vektorisierten Join-Operator anstelle des standardmäßigen PostgreSQL-Hash-Join-Operators anwenden. Dazu vergleicht der Planer die Kosten für die Ausführung der Abfrage mit beiden Methoden.

Wenn Sie den vektorbasierten Join für eine Instanz aktivieren möchten, setzen Sie das Flag google_columnar_engine.enable_vectorized_join der Instanz auf on.

Führen Sie den PostgreSQL-Befehl ALTER SYSTEM aus, um dieses Flag für eine Instanz festzulegen:

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

AlloyDB weist der vektorisierten Join-Funktion standardmäßig einen Thread zu. Sie können die Anzahl der für diese Funktion verfügbaren Threads erhöhen, indem Sie das Flag google_columnar_engine.vectorized_join_threads auf einen größeren Wert setzen.

Spaltenbasierte Engine manuell aktualisieren

Standardmäßig ist die spaltenorientierte Engine so eingestellt, dass der Spaltenspeicher automatisch im Hintergrund aktualisiert wird, wenn sie aktiviert ist. In bestimmten Situationen müssen Sie den spaltenbasierten Speicher möglicherweise manuell aktualisieren, z. B. wenn eine Beziehung mit einer großen Anzahl ungültiger Blöcke nicht durch die automatische Aktualisierung aktualisiert wird.

Wenn Sie die Spalten-Engine manuell aktualisieren möchten, führen Sie die folgende SQL-Abfrage aus:

SELECT google_columnar_engine_refresh('TABLE_NAME');

Ersetzen Sie TABLE_NAME durch den Namen der Tabelle oder der materialisierten Ansicht, die Sie manuell aktualisieren möchten.

Spaltenbasierte Engine deaktivieren

Wenn Sie die Columbarium-Engine für eine Instanz deaktivieren möchten, setzen Sie das Flag google_columnar_engine.enabled auf off.

So legen Sie dieses Flag für eine Instanz fest:

  1. Führen Sie den PostgreSQL-Befehl ALTER SYSTEM aus:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
    
  2. Halten Sie den Datenbankserver an.

  3. Starten Sie den Datenbankserver.

Fehlerbehebung bei der spaltenbasierten Engine

Fehler „Nicht genügend gemeinsam genutzter Arbeitsspeicher“ beheben

Wenn Sie AlloyDB Omni ohne ausreichenden freigegebenen Arbeitsspeicher für die spaltenorientierte Engine ausführen, wird möglicherweise dieser Fehler angezeigt:

Insufficient shared memory for generating the columnar formats.

Sie können dieses Problem beheben, indem Sie die Menge des freigegebenen Arbeitsspeichers angeben, die für den AlloyDB Omni-Container verfügbar ist. Die Vorgehensweise hängt vom Hostbetriebssystem ab.

Linux

Erhöhen Sie die Größe der /dev/shm-Partition Ihres Hosts, z. B. durch Bearbeiten der Datei /etc/fstab.

macOS

Installieren Sie einen neuen AlloyDB Omni-Container und geben Sie einen größeren Wert für den gemeinsamen Speicher für das --shm-size-Flag an.

Problem beheben, wenn Spalten nicht ausgefüllt werden

Wenn Spalten in der spaltenorientierten Engine nicht ausgefüllt werden, trifft möglicherweise eine der folgenden Situationen zu:

  • Die Spalten, die Sie hinzufügen möchten, enthalten einen nicht unterstützten Datentyp.

  • Die Anforderungen der spaltenbasierten Engine werden nicht erfüllt.

So finden Sie die Ursache für dieses Problem:

  • Prüfen Sie, ob sich die Tabellen oder materialisierten Ansichten in unserer Abfrage in der spaltenorientierten Engine befinden.

  • Prüfen Sie mit der Anweisung EXPLAIN, ob die spaltenorientierte Engine verwendet wird.

Nächste Schritte