Informationen zur Verwendung der spaltenbasierten Engine mit AlloyDB for PostgreSQL auf Google Cloud, finden Sie unter Spaltenbasierte Engine konfigurieren.
Eine konzeptionelle Übersicht über die spaltenbasierte Engine von AlloyDB finden Sie unter Spaltenbasierte Engine von AlloyDB.
Spaltenbasierte Engine aktivieren
Wenn Sie die spaltenbasierte Engine in einer Instanz verwenden möchten, setzen Sie das
google_columnar_engine.enabled
Flag der Instanz auf on.
So legen Sie dieses Flag für eine Instanz fest:
Führen Sie den
ALTER SYSTEMPostgreSQL-Befehl aus: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 folgen Sie den nächsten beiden Schritten, um den Datenbankserver jetzt neu zu starten.
Größe des Spaltenspeichers konfigurieren
Wenn die spaltenbasierte Engine in einer Instanz aktiviert ist, weist AlloyDB einen Teil des Arbeitsspeichers der Instanz zu, um die spaltenbasierten Daten zu speichern. Wenn Sie dem Spaltenspeicher schnellen 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 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
ALTER SYSTEMPostgreSQL-Befehl aus: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 Verknüpfung aktivieren
Die spaltenbasierte Engine verfügt über eine Funktion für vektorisiertes Verknüpfen, mit der die Leistung von Verknüpfungen verbessert werden kann, indem die vektorisierte Verarbeitung auf entsprechende Abfragen angewendet wird.
Nachdem Sie die vektorisierte Verknüpfung aktiviert haben, kann der AlloyDB-Abfrageplaner den Operator für die vektorisierte Verknüpfung anstelle des Standard-PostgreSQL-Hash-Verknüpfungsoperators anwenden. Der Planer trifft diese Entscheidung, indem er die Kosten für die Ausführung der Abfrage mit beiden Methoden vergleicht.
Wenn Sie die vektorisierte Verknüpfung in einer Instanz aktivieren möchten, setzen Sie das Flag
google_columnar_engine.enable_vectorized_join
der Instanz auf on.
Führen Sie den ALTER SYSTEM PostgreSQL-Befehl aus, um dieses Flag für eine Instanz festzulegen:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
Standardmäßig weist AlloyDB der Funktion für die vektorisierte Verknüpfung einen Thread zu. Sie können die Anzahl der für
diese Funktion verfügbaren Threads erhöhen, indem Sie das
google_columnar_engine.vectorized_join_threads
Flag auf einen größeren Wert setzen.
Spaltenbasierte Engine manuell aktualisieren
Standardmäßig ist die spaltenbasierte Engine so konfiguriert, dass der Spaltenspeicher im Hintergrund automatisch aktualisiert wird, wenn sie aktiviert ist. In bestimmten Situationen müssen Sie den spaltenbasierten Speicher möglicherweise manuell aktualisieren, z. B. wenn bei der automatischen Aktualisierung eine Beziehung mit einer hohen Anzahl ungültiger Blöcke nicht aktualisiert wird.
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 spaltenbasierte Engine in einer 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
ALTER SYSTEMPostgreSQL-Befehl aus:ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
Fehlerbehebung bei der spaltenbasierten Engine
Fehler „Nicht genügend gemeinsam genutzter Arbeitsspeicher“ beheben
Wenn Sie AlloyDB Omni mit nicht genügend gemeinsam genutztem Arbeitsspeicher für die spaltenbasierte 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 gemeinsam genutzten Arbeitsspeichers angeben, der für den AlloyDB Omni-Container verfügbar ist. Die Vorgehensweise hängt vom Betriebssystem des Hosts ab.
Linux
Erhöhen Sie die Größe der Partition /dev/shm Ihres Hostcomputers, 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 gemeinsam genutzten Arbeitsspeicher für das --shm-size Flag an.
Problem beheben, dass Spalten nicht gefüllt werden
Wenn Spalten in der spaltenbasierten Engine nicht gefüllt werden, kann eine der folgenden Situationen zutreffen:
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:
Bestätigen Sie, dass sich die Tabellen oder materialisierten Ansichten in der Abfrage in der spaltenbasierten Engine befinden.
Prüfen Sie die Verwendung der spaltenbasierten Engine mit der
EXPLAINAnweisung.
Nächste Schritte
Vollständige Liste der Datenbank-Flags für die spaltenbasierte Engine ansehen.
Informationen zur automatischen Spaltenbasierung