Wenn Sie die Spaltenmodul verwenden möchten, wenn Sie AlloyDB for PostgreSQL auf Google Cloudverwenden, lesen Sie den Abschnitt Spaltenmodul konfigurieren.
Eine konzeptionelle Übersicht über die spaltenbasierte Engine von AlloyDB finden Sie unter Spaltenbasierte 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:
Führen Sie den PostgreSQL-Befehl
ALTER SYSTEM
aus:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
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 folgen Sie den nächsten beiden Schritten, um den Datenbankserver jetzt neu zu starten.
Größe des Spaltenspeichers konfigurieren
Wenn die spaltenbasierte Engine für eine Instanz aktiviert ist, weist AlloyDB einen Teil des Instanzarbeitsspeichers zum Speichern der spaltenbasierten Daten zu. Wenn Sie Hochgeschwindigkeits-RAM für Ihren Spaltenspeicher reservieren, 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 die Zuweisung auch auf eine feste und bestimmte Größe festlegen.
So legen Sie dieses Flag für eine Instanz fest:
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.
Vektorbasierten Join aktivieren
Die spaltenbasierte Engine verfügt über eine Funktion für vektorisierte Joins, mit der die Leistung von Joins verbessert werden kann, indem die vektorisierte Verarbeitung auf entsprechende Abfragen angewendet wird.
Nachdem Sie den vektorisierten Join aktiviert haben, kann der AlloyDB-Abfrageplaner den vektorisierten Join-Operator anstelle des Standard-PostgreSQL-Hash-Join-Operators anwenden. Der Planer trifft diese Entscheidung, indem er die Kosten für die Ausführung der Abfrage mit beiden Methoden vergleicht.
Wenn Sie den vektorisierten 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 Funktion für vektorisierte Joins 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 wird der Spaltenspeicher automatisch im Hintergrund aktualisiert, wenn die Spalten-Engine aktiviert ist. In bestimmten Situationen müssen Sie den spaltenorientierten Speicher möglicherweise manuell aktualisieren, z. B. wenn eine Beziehung mit einer großen Anzahl ungültiger Blöcke nicht automatisch aktualisiert wird.
Führen Sie die folgende SQL-Abfrage aus, um die Spalten-Engine manuell zu aktualisieren:
SELECT google_columnar_engine_refresh('TABLE_NAME');
Ersetzen Sie TABLE_NAME
durch den Namen der Tabelle oder materialisierten Ansicht, die Sie manuell aktualisieren möchten.
Spaltenbasierte Engine deaktivieren
Wenn Sie die Columbar-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:
Führen Sie den PostgreSQL-Befehl
ALTER SYSTEM
aus:ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
Fehlerbehebung bei der spaltenbasierten Engine
Fehler „Nicht genügend gemeinsam genutzter Speicher“ beheben
Wenn Sie AlloyDB Omni ohne genügend gemeinsam genutzten 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 an gemeinsam genutztem Arbeitsspeicher angeben, die für den AlloyDB Omni-Container verfügbar ist. Die Vorgehensweise hängt von Ihrem Hostbetriebssystem ab.
Linux
Erhöhen Sie die Größe der /dev/shm
-Partition Ihres Hostcomputers, indem Sie beispielsweise die Datei /etc/fstab
bearbeiten.
macOS
Installieren Sie einen neuen AlloyDB Omni-Container und geben Sie einen größeren Wert für den gemeinsam genutzten Arbeitsspeicher für das Flag --shm-size
an.
Probleme mit nicht ausgefüllten Spalten beheben
Wenn Spalten in der spaltenorientierten Engine nicht gefüllt werden, kann eine der folgenden Situationen vorliegen:
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 des Problems:
Bestätigen Sie, dass sich die Tabellen oder materialisierten Ansichten in unserer Abfrage in der spaltenorientierten Engine befinden.
Prüfen Sie die Verwendung der spaltenorientierten Engine mit der Anweisung
EXPLAIN
.