Eine konzeptionelle Übersicht über die spaltenbasierte Engine von AlloyDB finden Sie unter Übersicht über die spaltenbasierte Engine von AlloyDB Omni.
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.
Einzelserver
So setzen Sie google_columnar_engine.enabled auf on:
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. Führen Sie andernfalls den folgenden Schritt aus, um den Datenbankserver jetzt neu zu starten.
Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Größe des Spaltenspeichers konfigurieren
Wenn die spaltenbasierte Engine für eine Instanz aktiviert ist, weist AlloyDB Omni einen Teil des Arbeitsspeichers der Instanz zu, um die spaltenbasierten Daten zu speichern. Wenn Sie Ihrem Spaltenspeicher schnellen RAM zuweisen, kann AlloyDB Omni so schnell wie möglich auf die Spaltendaten zugreifen.
Arbeitsspeicher und Speichercache stellen zusammen die Gesamtkapazität der spaltenbasierten Engine dar.
Arbeitsspeicher konfigurieren
Mit dem Flag google_columnar_engine.memory_size_in_mb können Sie die Zuweisung auf eine feste Größe festlegen.
Einzelserver
So legen Sie das Flag google_columnar_engine.memory_size_in_mb für eine Instanz fest:
Konfigurieren Sie den Arbeitsspeicher, indem Sie den PostgreSQL-Befehl
ALTER SYSTEMausführen:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;Ersetzen Sie
COLUMN_MEMORY_SIZEdurch die neue Größe des Spaltenspeichers in Megabyte, z. B.256.Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Speicher-Cache konfigurieren
Einzelserver
Sie können den Speichercache der spaltenbasierten Engine entweder auf dedizierten oder freigegebenen Geräten konfigurieren.
Zweckbestimmte Geräte
Wenn Sie auf zweckbestimmten Geräten den AlloyDB Omni-Speicher-Cache für die spaltenorientierte Engine für einen Einzelserver-Container aktivieren möchten, müssen Sie Laufwerke bereitstellen und ein Dateisystem erstellen. Anschließend müssen Sie das Cache-Verzeichnis in AlloyDB Omni einbinden und schließlich den Speicher-Cache für die spaltenorientierte Engine aktivieren.
Laufwerke bereitstellen und ein Dateisystem erstellen
Wenn Sie Speicher für den AlloyDB Omni-Speicher-Cache der spaltenorientierten Engine bereitstellen möchten, folgen Sie der Anleitung für Ihr Hostbetriebssystem, um ein Speichermedium vorzubereiten, z. B. ein benanntes Docker-Volume oder ein Dateisystem auf dedizierten Laufwerken.
Nicht-Linux (macOS, Windows)
Verwenden Sie unter macOS oder Windows ein benanntes Docker-Volume für den Cache des spaltenorientierten Speichers, um eine optimale Leistung zu erzielen.
-
Erstellen Sie ein benanntes Volume:
docker volume create COLUMNAR_CACHE_VOLUME
Ersetzen Sie
COLUMNAR_CACHE_VOLUMEdurch einen Namen für das Volume, z. B.omni-columnar-cache. -
Verwenden Sie dieses Volume, wenn Sie den Container ausführen. Weitere Informationen finden Sie unter Spaltenspeicher-Cache-Verzeichnis bereitstellen.
Linux
Wenn Sie Laufwerke bereitstellen und ein Dateisystem für den Speicher-Cache der spaltenbasierten AlloyDB Omni-Engine erstellen möchten, erstellen Sie ein Dateisystem auf einem oder mehreren Laufwerken und stellen es in einem Container mit AlloyDB Omni bereit. Außerdem können Sie Dienstprogramme wie mdadm oder lvm verwenden, um die Kapazität mit mehreren Festplatten zu bündeln und ein beliebiges Dateisystem zu verwenden. Die folgenden Schritte zeigen, wie Sie lvm und ext4 auf einer Ubuntu Compute Engine-Instanz mit NVMe-SSDs verwenden.
Erstellen Sie eine Volume-Gruppe aus allen verfügbaren physischen Geräten:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
Ersetzen Sie Folgendes:
STORAGE_PREFIX: Das Präfix des Pfads der lokalen Ziellaufwerke, die über die NVMe-Schnittstelle (Nonvolatile Memory Express) an eine VM angehängt sind. Auf Google Cloudbeginnen die NVMe-Gerätepfade beispielsweise immer mit/dev/nvme0n.VOLUME_GROUP: Der Name einer Volumegruppe, in der Ihre SSDs kombiniert sind, z. B.omni-disk-cache-volume.
-
Verwenden Sie den folgenden Befehl, um ein logisches Volume aus der verfügbaren Kapazität der Volume-Gruppe aus dem vorherigen Schritt zu erstellen:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Ersetzen Sie
LOGICAL_VOLUMEdurch den Namen eines logischen Volumes, das vom LVM als Partition behandelt wird, z. B.omni_disk_cache_device. - Erstellen Sie das
ext4-Dateisystem auf dem logischen Volume. Bei Bedarf können Sie andereext4-Optionen angeben, die der Datensicherheit unterliegen.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
Verwenden Sie den folgenden Befehl, um ein Verzeichnis als Bereitstellungspunkt auf dem Hostcomputer zu erstellen und das Dateisystem bereitzustellen:
sudo mkdir /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
Ersetzen Sie
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORYdurch den Namen des Verzeichnisses oder einen Pfad zu dem Verzeichnis, das als Bereitstellungspunkt dient, z. B.omni_columnar_storage_cache_directory.
Cacheverzeichnis für spaltenbasierten Speicher in AlloyDB Omni einbinden
Bevor Sie den Datenträger-Cache für AlloyDB Omni aktivieren, das in einem Container ausgeführt wird, müssen Sie das Cache-Verzeichnis in AlloyDB Omni einbinden.
Verwenden Sie das Flag -v, um das Cache-Verzeichnis in Ihrem Container bereitzustellen.
Für Linux-Hostpfade:
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINERFür benannte Volumes (nicht Linux):
-v COLUMNAR_CACHE_VOLUME:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Beispiel für einen Docker-Befehl mit einem benannten Volume:
sudo docker run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v COLUMNAR_CACHE_VOLUME:/var/lib/alloydb/columnar_cache
-d google/alloydbomni
Informationen zur Installation von AlloyDB Omni über ein Docker-Image und zur Anpassung finden Sie unter AlloyDB Omni-Installation anpassen.
Verwenden Sie den folgenden Befehl, um OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY in Ihrem Docker-Container mit AlloyDB Omni bereitzustellen:
Docker
sudo docker run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni
Ersetzen Sie Folgendes:
CONTAINER_NAME: Der Name, der dem neuen AlloyDB Omni-Container zugewiesen werden soll, z. B.my-omni.PASSWORD: Das Passwort für den PostgreSQL-Datenbank-Root-Administrator.DATA_DIR: Der Dateisystempfad, den AlloyDB Omni für sein Datenverzeichnis verwenden soll.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: Das Cacheverzeichnis im AlloyDB Omni-Container, das dem Bereitstellungspunkt auf dem Hostcomputer zugeordnet ist, z. B. basierend auf dem Wert des Cacheverzeichnisses im Container entweder/omni_disk_cache_directory, ähnlich wieOMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, oder/disk/cache/inside/container.
Podman
podman run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni
Ersetzen Sie Folgendes:
CONTAINER_NAME: Der Name, der dem neuen AlloyDB Omni-Container zugewiesen werden soll, z. B.my-omni.PASSWORD: Das Passwort für den PostgreSQL-Datenbank-Root-Administrator.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: Das Cacheverzeichnis im AlloyDB Omni-Container, das dem Bereitstellungspunkt auf dem Hostcomputer zugeordnet ist, z. B. basierend auf dem Wert des Cacheverzeichnisses im Container entweder/omni_columnar_storage_cache_directory, ähnlich wieOMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, oder/disk/cache/inside/container.
Verwenden Sie die folgenden Befehle, um dem eingebundenen OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY vollständige Zugriffsrechte zu gewähren:
Docker
sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo docker exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Podman
sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo podman exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Spaltenbasierten AlloyDB Omni-Speicher-Cache für AlloyDB Omni aktivieren, das in einem Container ausgeführt wird
Wenn Sie den AlloyDB Omni-Spaltenspeicher-Cache auf zweckbestimmten Geräten für Ihre Datenbank aktivieren möchten, legen Sie die entsprechenden GUC-Parameter (Grand Unified Configuration) fest, nachdem Sie dafür gesorgt haben, dass das eingebundene Cache-Verzeichnis aus dem Docker-Container heraus zugänglich ist.
Legen Sie das Cache-Verzeichnis für den spaltenbasierten Speicher fest:
ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;Ersetzen Sie
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORYdurch den absoluten Pfad zum dedizierten Verzeichnis, in dem AlloyDB Omni die Cache-Dateien für den Speicher der spaltenbasierten Engine speichern soll. Prüfen Sie, ob dieses Verzeichnis vorhanden ist und die entsprechenden Schreibberechtigungen für den Datenbanknutzer hat.Konfigurieren Sie die Größe des Speichercaches:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Ersetzen Sie
STORAGE_CACHE_SIZEdurch die gewünschte Größe des Cache für den spaltenorientierten Speicher in Megabyte. Standardmäßig wird die gesamte Größe des zweckbestimmten Geräts der spaltenbasierten Engine zugewiesen, ohne dass sich dies auf den Datenträger-Cache auswirkt. Der maximal zulässige Wert für dieses Flag ist 1.000 *google_columnar_engine.memory_size_in_mb, je nachdem, welcher Wert kleiner ist.Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Gemeinsam verwendete Geräte
Bevor Sie den Cache für spaltenbasierten Speicher für freigegebene Geräte mit Datenträger-Cache konfigurieren, müssen Sie den AlloyDB Omni-Datenträger-Cache aktivieren.
Konfigurieren Sie den Speichercache auf gemeinsam genutzten Geräten so:
Speicher-Cache konfigurieren:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Ersetzen Sie
STORAGE_CACHE_SIZEdurch die gewünschte Größe des Speichercaches in Megabyte. Standardmäßig werden 5 % des Datenträger-Cache der spaltenbasierten Engine zugewiesen. Der maximal zulässige Wert für dieses Flag beträgt 50% des gesamten Datenträger-Cache oder 1.000 *google_columnar_engine.memory_size_in_mb, je nachdem, welcher Wert kleiner ist.Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
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 den einzelnen 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.
ALTER SYSTEM aus:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
AlloyDB Omni weist dem vektorisierten Join-Feature 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. Der Höchstwert ist cpu_count * 2.
Spaltenbasierte Engine manuell aktualisieren
Wenn die spaltenbasierte Engine aktiviert ist, wird der Spaltenspeicher standardmäßig im Hintergrund aktualisiert.
Führen Sie die folgende SQL-Abfrage aus, um die spaltenbasierte Engine manuell zu aktualisieren:
SELECT google_columnar_engine_refresh(relation =>'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.
Einzelserver
So setzen Sie google_columnar_engine.enabled auf off:
- Führen Sie den PostgreSQL-Befehl
ALTER SYSTEMaus:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.
Docker
Wenn Sie einen AlloyDB Omni-Container neu starten möchten, führen Sie den Befehl docker container restart aus:
sudo docker restart CONTAINER_NAMEErsetzen Sie CONTAINER_NAME durch den Namen, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben.
Podman
Wenn Sie einen AlloyDB Omni-Container neu starten möchten, führen Sie den Befehl podman container start aus:
sudo podman restart CONTAINER_NAMEErsetzen Sie CONTAINER_NAME durch den Namen, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben.
Nächste Schritte
Vollständige Liste der Datenbank-Flags für die spaltenbasierte Engine
Arbeiten Sie das Google CodeLab-Tutorial Schnellere Analyseabfragen mit der spaltenbasierten Engine in AlloyDB Omni durch.