Spaltenbasierte Engine konfigurieren

Wenn Sie analytische Abfragen beschleunigen und die Leistung für HTAP-Arbeitslasten (Hybrid Transactional and Analytical Processing) optimieren möchten, können Sie die spaltenbasierte Engine auf einer AlloyDB for PostgreSQL-Instanz aktivieren. Sie können auch die anfängliche Arbeitsspeichergröße für den Spaltenspeicher konfigurieren und die Einstellungen für den Arbeitsspeicher- und Speichercache an die Anforderungen Ihrer Arbeitslast anpassen.

Informationen zur Verwendung der spaltenbasierten Engine in AlloyDB Omni finden Sie unter Spaltenbasierte Engine in AlloyDB Omni aktivieren.

Bei jeder dieser Aktionen wird der Wert eines Datenbank-Flags auf einer Ihrer AlloyDB-Instanzen geändert. Weitere Informationen zum Festlegen von Datenbank-Flags finden Sie unter Datenbank-Flags einer Instanz 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.

Nachdem Sie dieses Flag festgelegt haben, wird die Instanz automatisch neu gestartet.

Weitere Informationen zum Festlegen von Datenbank-Flags in AlloyDB finden Sie unter Datenbank-Flags einer Instanz konfigurieren.

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 spaltenbasierten Daten zugreifen.

Arbeitsspeicher und Speichercache stellen zusammen die Gesamtkapazität der spaltenbasierten Engine dar.

Arbeitsspeicher für die spaltenbasierte Engine konfigurieren

Wenn der Spaltenspeicher größer als der zugewiesene Teil des Arbeitsspeichers Ihrer Instanz wird, verwendet AlloyDB automatisch die zugrunde liegende Cache-Ebene der Instanz, um die zusätzlichen spaltenbasierten Daten zu speichern.

In AlloyDB können Sie Relationen, materialisierte Ansichten und Vektorindexe in die spaltenbasierte Engine laden, um die Abfrageleistung zu verbessern.

Standardmäßig weist AlloyDB dem Spaltenspeicher 30% des Instanzarbeitsspeichers zu. Bei einer Instanz mit 1 vCPU beträgt die Standardzuweisung 10%. AlloyDB passt die Gesamtzuteilung automatisch an, wenn Sie die Größe der Instanz ändern. Sie können den Arbeitsspeicher der Instanz auf maximal 50 % ändern, obwohl 70% zulässig sind. Bei einer Instanz mit 1 vCPU beträgt der maximal zulässige Wert 20%. Unabhängig von der Instanzgröße beträgt die Mindestzuweisung 128 MB. Die empfohlene Arbeitsspeichergröße für die spaltenbasierte Engine für Ihre Instanz finden Sie unter Empfohlene Arbeitsspeichergröße für den Spaltenspeicher.

Mit dem Flag google_columnar_engine.memory_size_in_mb können Sie die Zuweisung auch auf eine feste und bestimmte Größe festlegen. Wenn AlloyDB zur Standardzuweisung zurückkehren soll, entfernen Sie das Flag aus der Instanz.

Weitere Informationen zum Festlegen oder Löschen von Flags finden Sie unter Datenbank-Flags einer Instanz konfigurieren.

Laden von Vektorindexen in die spaltenbasierte Engine konfigurieren

Die spaltenorientierte Engine beschleunigt die Vektorsuche, wenn HNSW- oder ScaNN-Vektorindexe darin eingefügt werden. Die Beschleunigung der spaltenorientierten Engine für HNSW-Indizes ist allgemein verfügbar (GA), während die Beschleunigung für ScaNN-Indizes in der Vorabversion verfügbar ist.

Wenn Sie den spaltenbasierten Index-Cache aktivieren möchten, setzen Sie das Flag google_columnar_engine.enable_index_caching auf on.

Wenn Sie diese Funktion deaktivieren möchten, setzen Sie das Flag auf off.

Speicher-Cache für die spaltenbasierte Engine konfigurieren

Sie müssen die Größe von google_columnar_engine.storage_cache_size relativ zur Einstellung google_columnar_engine.memory_size_in_mb festlegen, da der Arbeitsspeicher der spaltenbasierten Engine für In-Memory-Metadaten für den Speichercache verwendet wird. Das empfohlene Größenverhältnis beträgt etwa das 100- bis 1.000-Fache der Arbeitsspeichergröße. Bei einem google_columnar_engine.memory_size_in_mb-Wert von 1024 (1 GB) müssen Sie beispielsweise google_columnar_engine.storage_cache_size zwischen 100 GB und 1.000 GB festlegen.

Der Speichercache der spaltenbasierten Engine wird entsprechend der Instanzstufe bereitgestellt.

Instanzstufe Standard-Cache-Größe der spaltenbasierten Engine
N2 C4A
Primär Lesepool Primärer Pool oder Lesepool
1 vCPU – – 0
2 vCPU 18,75 GB 37,5 GB 18,75 GB
4 vCPU 18,75 GB 37,5 GB 18,75 GB
8 vCPUs 18,75 GB 37,5 GB 37,5 GB
16 vCPUs 37,5 GB 37,5 GB 75 GB
32 vCPU 75 GB 75 GB 112,5 GB
48 vCPUs – – 187,5 GB
64 vCPUs 150 GB 150 GB 262,5 GB
72 vCPUs – – 300 GB
96 vCPUs 300 GB 300 GB –
128 vCPUs 450 GB 450 GB –

Mit dem Flag google_columnar_engine.storage_cache_size können Sie den Speichercache der spaltenbasierten Engine anpassen. Dabei gelten die in der folgenden Tabelle aufgeführten Mindest- und Höchstwerte:

Instanzstufe Mindestgröße des Cache der spaltenbasierten Engine Maximale Cache-Größe der spaltenbasierten Engine
N2 C4A
Primär Lesepool Primärer Pool oder Lesepool
1 vCPU – – – 0
2 vCPU 0 187,5 GB 375 GB 187,5 GB
4 vCPU 0 187,5 GB 375 GB 187,5 GB
8 vCPUs 0 187,5 GB 375 GB 375 GB
16 vCPUs 0 375 GB 375 GB 750 GB
32 vCPU 0 750 GB 750 GB 1.125 GB
48 vCPUs 0 – – 1.875 GB
64 vCPUs 0 1.500 GB 1.500 GB 2.625 GB
72 vCPUs 0 – – 3.000 GB
96 vCPUs 0 3.000 GB 3.000 GB –
128 vCPUs 0 4.500 GB 4.500 GB –

Speichercachedaten für die spaltenbasierte Engine überwachen

Mit den folgenden Befehlen können Sie Daten zum Speichercache der spaltenbasierten Engine aufrufen und überwachen:

Befehl Beschreibung
SELECT google_columnar_engine_storage_cache_used(); Gibt die Größe des verwendeten Speichercaches der spaltenbasierten Engine zurück.
SELECT google_columnar_engine_storage_cache_available(); Gibt die Größe des nicht verwendeten Speichercaches der spaltenbasierten Engine zurück.
SHOW google_columnar_engine.storage_cache_size; Gibt die Gesamtgröße des konfigurierten Speichercaches für die spaltenbasierte Engine zurück.

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.

Weitere Informationen zum Festlegen von Datenbank-Flags finden Sie unter Datenbank-Flags einer Instanz konfigurieren.

AlloyDB weist dem Feature für vektorisierte Joins standardmäßig einen Thread zu. Sie können die Anzahl der für dieses Feature 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

Wenn Sie die spaltenbasierte Engine aktivieren, wird der Spaltenspeicher standardmäßig automatisch im Hintergrund aktualisiert.

Bei Arbeitslasten mit einer hohen Rate an Datenänderungen, z. B. häufigen INSERT-, UPDATE- oder DELETE-Vorgängen, können Sie den spaltenorientierten Speicher nach diesen Änderungen manuell aktualisieren, um den Index auf dem neuesten Stand zu halten.

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 für eine Instanz deaktivieren möchten, setzen Sie das Flag google_columnar_engine.enabled auf off.

Weitere Informationen zum Festlegen von Datenbank-Flags in AlloyDB finden Sie unter Datenbank-Flags einer Instanz konfigurieren.

Nachdem Sie dieses Flag festgelegt haben, wird die Instanz automatisch neu gestartet.

Fehlerbehebung bei der spaltenbasierten Engine

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 die Audit-Logs Ihrer Instanz.

  • Prüfen Sie, ob die Tabellen oder materialisierten Ansichten in Ihrer Abfrage in der spaltenbasierten Engine vorhanden sind.

  • Prüfen Sie die Verwendung der spaltenbasierten Engine mit der Anweisung EXPLAIN.

Nächste Schritte