Spaltenbasierte Engine in AlloyDB Omni konfigurieren

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie die spaltenbasierte Engine in einem AlloyDB Omni-Datenbankcluster aktivieren oder deaktivieren. Außerdem wird erläutert, wie Sie eine geeignete Anfangsgröße für den Spaltenspeicher konfigurieren.

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 in einer Instanz verwenden möchten, setzen Sie das google_columnar_engine.enabled Flag der Instanz auf on.

Einzelserver

So setzen Sie google_columnar_engine.enabled auf on:

  1. Führen Sie den ALTER SYSTEM PostgreSQL-Befehl aus:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. 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 den folgenden Schritt aus, um den Datenbankserver jetzt neu zu starten.

  3. Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

Größe des Spaltenspeichers konfigurieren

Wenn die spaltenbasierte Engine in einer 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 spaltenbasierten Daten zugreifen.

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

Arbeitsspeicher konfigurieren

Sie können die Zuweisung mit dem google_columnar_engine.memory_size_in_mb Flag auf eine feste Größe festlegen.

Einzelserver

So legen Sie das Flag google_columnar_engine.memory_size_in_mb für eine Instanz fest:

  1. Konfigurieren Sie den Arbeitsspeicher, indem Sie den ALTER SYSTEM PostgreSQL-Befehl ausführen:

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
    

    Ersetzen Sie COLUMN_MEMORY_SIZE durch die neue Größe des Spaltenspeichers in Megabyte, z. B. 256.

  2. Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Speichercache konfigurieren

Einzelserver

Sie können den Speichercache der spaltenbasierten Engine entweder auf dedizierten oder gemeinsam verwendeten Geräten konfigurieren.

Zweckbestimmte Geräte

Wenn Sie auf dedizierten Geräten den Speichercache der spaltenbasierten Engine von AlloyDB Omni für einen Einzelserver-Container aktivieren möchten, müssen Sie Laufwerke bereitstellen und ein Dateisystem erstellen, dann das Cacheverzeichnis in AlloyDB Omni einbinden und schließlich den spaltenbasierten Speichercache aktivieren.

Laufwerke bereitstellen und ein Dateisystem erstellen

Wenn Sie Speicher für den Speichercache der spaltenbasierten Engine von AlloyDB Omni 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 spaltenbasierten Speichercache, um eine optimale Leistung zu erzielen.

  1. Erstellen Sie ein benanntes Volume:

    docker volume create COLUMNAR_CACHE_VOLUME

    Ersetzen Sie COLUMNAR_CACHE_VOLUME durch einen Namen für das Volume, z. B. omni-columnar-cache.

  2. Verwenden Sie dieses Volume, wenn Sie Ihren Container ausführen. Weitere Informationen finden Sie unter Spaltenspeicher-Cacheverzeichnis einbinden.

Linux

Wenn Sie Laufwerke bereitstellen und ein Dateisystem für den Speichercache der spaltenbasierten Engine von AlloyDB Omni erstellen möchten, erstellen Sie ein Dateisystem auf einer oder mehreren Festplatten 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.

  1. 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.
  2. Verwenden Sie den folgenden Befehl, um ein logisches Volume aus der kostenlosen Kapazität der Volume-Gruppe aus dem vorherigen Schritt zu erstellen:

            sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP

    Ersetzen Sie LOGICAL_VOLUME durch den Namen eines logischen Volumes, das vom LVM als Partition behandelt wird, z. B. omni_disk_cache_device.

  3. Erstellen Sie das ext4-Dateisystem auf dem logischen Volume. Bei Bedarf können Sie andere ext4-Optionen angeben, die der Datensicherheit unterliegen.
          sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
  4. 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_DIRECTORY durch den Namen des Verzeichnisses oder einen Pfad zu dem Verzeichnis, das als Bereitstellungspunkt dient, z. B. omni_columnar_storage_cache_directory.

Spaltenspeicher-Cacheverzeichnis 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 Cacheverzeichnis in AlloyDB Omni einbinden.

Verwenden Sie das Flag -v, um das Cacheverzeichnis in Ihrem Container einzubinden.

  • Für Linux-Hostpfade:

    -v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  • Fü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 wie OMNI_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 wie OMNI_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
  

Spaltenspeicher-Cache von AlloyDB Omni für AlloyDB Omni aktivieren, das in einem Container ausgeführt wird

Wenn Sie den spaltenbasierten Speichercache von AlloyDB Omni auf dedizierten Geräten für Ihre Datenbank aktivieren möchten, legen Sie die entsprechenden GUC-Parameter (Grand Unified Configuration) fest, nachdem Sie geprüft haben, ob das eingebundene Cacheverzeichnis aus dem Docker-Container heraus zugänglich ist.

  1. Legen Sie das spaltenbasierte Speichercacheverzeichnis fest:

    ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
    

    Ersetzen Sie OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY durch den absoluten Pfad zu dem dedizierten Verzeichnis, in dem AlloyDB Omni die Speichercachedateien der spaltenbasierten Engine speichern soll. Prüfen Sie, ob dieses Verzeichnis vorhanden ist und die entsprechenden Schreibberechtigungen für den Datenbanknutzer hat.

  2. Konfigurieren Sie die Größe des Speichercaches:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Ersetzen Sie STORAGE_CACHE_SIZE durch die gewünschte Größe des spaltenbasierten Speichercaches in Megabyte. Standardmäßig wird die gesamte Größe des zweckbestimmten Geräts der spaltenbasierten Engine zugewiesen, ohne den Datenträger-Cache zu beeinträchtigen. Der maximal zulässige Wert für dieses Flag ist das Minimum aus 1000 * google_columnar_engine.memory_size_in_mb.

  3. Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Gemeinsam verwendete Geräte

Bevor Sie den spaltenbasierten Speichercache für gemeinsam verwendete Geräte mit Datenträger-Cache konfigurieren, müssen Sie den AlloyDB Omni-Datenträger-Cache aktivieren.

Konfigurieren Sie den Speichercache auf gemeinsam verwendeten Geräten so:

  1. Speichercache konfigurieren:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Ersetzen Sie STORAGE_CACHE_SIZE durch die gewünschte Größe des Speichercaches in Megabyte. Standardmäßig werden 5% des Datenträger-Caches der spaltenbasierten Engine zugewiesen. Der maximal zulässige Wert für dieses Flag ist das Minimum aus 50% des gesamten Datenträger-Caches oder 1000 * google_columnar_engine.memory_size_in_mb.

  2. Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Vektorisierte Verknüpfung aktivieren

Die spaltenbasierte Engine hat eine Funktion für vektorisiertes Verknüpfen, mit der die Leistung von Verknüpfungen verbessert werden kann, indem die vektorisierte Verarbeitung auf geeignete 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 Standardoperators für die PostgreSQL-Hash-Verknüpfung anwenden. Der Planer trifft diese Entscheidung, indem er die Kosten für die Ausführung der Abfrage mit jeder Methode 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 Omni 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. 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 Spalten-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 spaltenbasierte Engine in einer Instanz deaktivieren möchten, setzen Sie das Flag google_columnar_engine.enabled auf off.

Einzelserver

So setzen Sie google_columnar_engine.enabled auf off:

  1. Führen Sie den ALTER SYSTEM PostgreSQL-Befehl aus:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. Damit die Änderungen an den Konfigurationsparametern wirksam werden, starten Sie den Container mit AlloyDB Omni neu.

Docker

Führen Sie den docker container restart Befehl aus, um einen AlloyDB Omni-Container neu zu starten:

  sudo docker restart CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben.

Podman

Führen Sie den podman container start Befehl aus, um einen AlloyDB Omni-Container neu zu starten:

  sudo podman restart CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben.

Nächste Schritte