Informationen zur Verwendung der spaltenbasierten Engine bei der Verwendung von AlloyDB for PostgreSQL auf Google Cloudfinden Sie unter Spaltenbasierte Engine konfigurieren.
Eine konzeptionelle Übersicht über die spaltenbasierte Engine von AlloyDB finden Sie unter Informationen zur spaltenbasierten Engine von AlloyDB.
Spaltenbasierte Engine aktivieren
Wenn Sie die spaltenbasierte 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 SYSTEMaus:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'Wenn Sie die Konfiguration der spaltenbasierten 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.
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 schnellen RAM zuweisen, kann AlloyDB so schnell wie möglich auf die Spaltendaten 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 SYSTEMaus:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;Ersetzen Sie
COLUMN_STORE_SIZEdurch die neue Größe des Spaltenspeichers in Megabyte.
Vektorisierte Joins aktivieren
Die spaltenbasierte Engine bietet die Funktion vektorisierter Join, mit der die Leistung von Joins verbessert werden kann, indem die vektorisierte Verarbeitung auf qualifizierte 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.
Wenn Sie dieses Flag für eine Instanz festlegen möchten, führen Sie den PostgreSQL-Befehl ALTER SYSTEM aus:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
AlloyDB weist dem vektorisierten Join-Feature 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 spaltenbasierte Engine so eingestellt, dass der Spaltenspeicher im Hintergrund automatisch aktualisiert wird, wenn sie aktiviert ist. In bestimmten Situationen müssen Sie den spaltenorientierten Speicher möglicherweise manuell aktualisieren, z. B. wenn die automatische Aktualisierung eine Beziehung mit einer hohen Anzahl ungültiger Blöcke nicht aktualisiert.
Führen Sie die folgende SQL-Abfrage aus, um die spaltenbasierte Engine manuell zu aktualisieren:
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 spaltenorientierte 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 SYSTEMaus:ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
Fehlerbehebung bei der spaltenbasierten Engine
Fehler „Nicht genügend freigegebener Speicher“ beheben
Wenn Sie AlloyDB Omni ohne genügend gemeinsam genutzten Arbeitsspeicher für die spaltenbasierte Engine ausführen, wird möglicherweise der folgende 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 dem AlloyDB Omni-Container zur Verfügung steht. Die Methode hierfür hängt vom Betriebssystem des Hosts 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 für das Flag --shm-size einen größeren Wert für den gemeinsam genutzten Speicher an.
Fehler beheben, wenn Spalten nicht ausgefüllt werden
Wenn Spalten in der spaltenbasierten Engine nicht ausgefü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 dieses Problems:
Prüfen Sie, ob die Tabellen oder materialisierten Ansichten in unserer Abfrage in der spaltenbasierten Engine enthalten sind.
Überprüfen Sie die Verwendung der spaltenbasierten Engine mit der Anweisung
EXPLAIN.