Spaltenbasierte Engine in AlloyDB Omni konfigurieren

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie die spaltenbasierte Engine für einen AlloyDB Omni-Datenbankcluster aktivieren oder deaktivieren. Außerdem wird beschrieben, 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 spaltenorientierte Engine für eine Instanz verwenden möchten, setzen Sie das Flag google_columnar_engine.enabled der Instanz auf on.

Die Schritte, die Sie zum Festlegen dieses Flags für eine Instanz ausführen, hängen davon ab, ob Sie AlloyDB Omni in einem Container oder in einem Kubernetes-Cluster ausführen.

Einzelserver

So setzen Sie google_columnar_engine.enabled auf on:

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

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. Wenn Sie die Konfiguration der spaltenorientierten 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.

  3. Damit die Konfigurationsparameteränderung wirksam wird, starten Sie den laufenden Container mit AlloyDB Omni neu.

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

Kubernetes

Wenn Sie das Flag google_columnar_engine.enabled auf on setzen möchten, ändern Sie das Manifest Ihres Datenbankclusters, um dem Abschnitt primarySpec das Attribut parameters hinzuzufügen:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "16.8.0"
      primarySpec:
        parameters:
          google_columnar_engine.enabled: "on"

Ersetzen Sie CLUSTER_NAME durch den Namen Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.

Größe des Spaltenspeichers konfigurieren

Wenn die spaltenbasierte Engine für eine Instanz aktiviert ist, weist AlloyDB Omni einen Teil des Instanzarbeitsspeichers zum Speichern der spaltenbasierten Daten zu. Wenn Sie Hochgeschwindigkeits-RAM für Ihren Spaltenspeicher reservieren, kann AlloyDB Omni so schnell wie möglich auf die spaltenbasierten Daten zugreifen.

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

Arbeitsspeicher konfigurieren

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

Die Schritte, die Sie zum Konfigurieren des Arbeitsspeichers des Spaltenspeichers für AlloyDB Omni ausführen, hängen davon ab, ob Sie AlloyDB Omni in einem Container oder in einem Kubernetes-Cluster ausführen.

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 PostgreSQL-Befehl ALTER SYSTEM 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 Konfigurationsparameteränderung wirksam wird, starten Sie den laufenden Container mit AlloyDB Omni neu.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

Wenn Sie das Flag google_columnar_engine.memory_size_in_mb festlegen möchten, ändern Sie das Manifest Ihres Datenbankclusters, um dem Abschnitt primarySpec das Attribut parameters hinzuzufügen:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "16.8.0"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

Ersetzen Sie Folgendes:

  • CLUSTER_NAME: Der Name Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.
  • COLUMN_MEMORY_SIZE: Die neue Größe des Spaltenspeichers in Megabyte, z. B. 256.

Speichercache konfigurieren

Die Schritte, die Sie zum Konfigurieren des Speichercaches der spaltenorientierten Engine für AlloyDB Omni ausführen, hängen davon ab, ob Sie AlloyDB Omni in einem Container oder in einem Kubernetes-Cluster ausführen.

Einzelserver

Sie können den Speichercache der spaltenorientierten Engine auf dedizierten oder gemeinsam genutzten Geräten konfigurieren.

Zweckbestimmte Geräte

Auf dedizierten Geräten müssen Sie zum Aktivieren des Speichercaches der spaltenorientierten Engine von AlloyDB Omni für einen Single-Server-Container Festplatten bereitstellen und ein Dateisystem erstellen. Anschließend müssen Sie das Cacheverzeichnis in AlloyDB Omni bereitstellen und schließlich den spaltenorientierten Speichercache aktivieren.

Laufwerke bereitstellen und ein Dateisystem erstellen

Um Laufwerke bereitzustellen und ein Dateisystem für den Speichercache der spaltenorientierten Engine von AlloyDB Omni zu erstellen, 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. In den folgenden Schritten wird die Verwendung von lvm und ext4 auf einer Ubuntu Compute Engine-Instanz mit NVMe-SSDs veranschaulicht.

  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 freien Kapazität der Volumegruppe 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 weitere 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 Mount-Point dient, z. B. omni_columnar_storage_cache_directory.

Spaltenbasiertes Speicher-Cacheverzeichnis in AlloyDB Omni einbinden

Bevor Sie den Festplatten-Cache für AlloyDB Omni aktivieren, das in einem Container ausgeführt wird, müssen Sie das Cache-Verzeichnis in AlloyDB Omni einbinden.

Informationen zum Installieren von AlloyDB Omni über ein Docker-Image und zum Anpassen der Installation 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 zu mounten:

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 Cache-Verzeichnis im AlloyDB Omni-Container, das dem Mount-Point auf dem Hostcomputer zugeordnet ist, z. B. basierend auf dem Wert des Cache-Verzeichnisses 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 Cache-Verzeichnis im AlloyDB Omni-Container, das dem Mount-Point auf dem Hostcomputer zugeordnet ist, z. B. basierend auf dem Wert des Cache-Verzeichnisses 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
  

Spaltenbasierte Speicher-Cache für AlloyDB Omni aktivieren, wenn AlloyDB Omni in einem Container ausgeführt wird

Wenn Sie den spaltenorientierten 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 Cache-Verzeichnis für die spaltenorientierte Speicherung 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 zum dedizierten Verzeichnis, in dem AlloyDB Omni die Speicher-Cache-Dateien der Spalten-Engine speichern soll. Prüfen Sie, ob dieses Verzeichnis vorhanden ist und der Datenbanknutzer die entsprechenden Schreibberechtigungen hat.

  2. Speicher-Cache-Größe 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 Spaltenspeichercaches in Megabyte. Standardmäßig wird die gesamte Größe des dedizierten Geräts der spaltenorientierten Engine zugewiesen, ohne den Festplatten-Cache zu beeinträchtigen. Der maximal zulässige Wert für dieses Flag ist der kleinere Wert von 1.000 * google_columnar_engine.memory_size_in_mb.

  3. Damit die Konfigurationsparameteränderung wirksam wird, starten Sie den laufenden Container mit AlloyDB Omni neu.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Gemeinsam verwendete Geräte

Bevor Sie den Spaltenspeicher-Cache für gemeinsam genutzte Geräte mit Festplatten-Cache konfigurieren, müssen Sie den AlloyDB Omni-Festplatten-Cache aktivieren.

So konfigurieren Sie den Speichercache auf gemeinsam verwendeten Geräten:

  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 Festplatten-Cache der spaltenorientierten Engine zugewiesen. Der maximal zulässige Wert für dieses Flag beträgt 50% des gesamten Festplatten-Cache oder 1.000 * google_columnar_engine.memory_size_in_mb, je nachdem, welcher Wert niedriger ist.

  2. Damit die Konfigurationsparameteränderung wirksam wird, starten Sie den laufenden Container mit AlloyDB Omni neu.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

Wenn Sie den Speichercache für Ihre Datenbank aktivieren möchten, ändern Sie das Manifest Ihres Datenbankclusters, um das Attribut columnarSpillToDisk dem Abschnitt features des Abschnitts primarySpec hinzuzufügen:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "16.8.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_CACHE_SIZE
      ultraFastCache:
        cacheSize: ULTRAFAST_CACHE_SIZE
        genericVolume:
          storageClass: "STORAGE_CLASS_NAME"
...

Ersetzen Sie Folgendes:

  • CLUSTER_NAME: Der Name Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.
  • STORAGE_CACHE_SIZE: die Größe des Spaltenspeichercaches, z. B. 5Gi. Wenn Sie keinen Wert für dieses Feld angeben, werden standardmäßig 5% des Festplatten-Cache der Spalten-Engine zugewiesen.
  • ULTRAFAST_CACHE_SIZE: Die Größe des Cache, z. B. 100Gi. Es muss größer als shared_buffers sein. Dieses Feld ist optional. Wenn Sie den Wert dieses Felds nicht angeben, verwendet AlloyDB Omni den gesamten verbleibenden Speicherplatz auf der Festplatte. Dies gilt sowohl für AlloyDB Omni in einem Container als auch in einem Kubernetes-Cluster. Weitere Informationen zu Maßeinheiten finden Sie unter Arbeitsspeicherressourceneinheiten.
  • STORAGE_CLASS_NAME: Der Name der Speicherklasse des ultraschnellen Cache-Volumes, z. B. local-storage.

Vektorbasierten Join aktivieren

Die spaltenbasierte Engine verfügt über eine Funktion für vektorisierte Joins, mit der die Leistung von Joins verbessert werden kann, indem die vektorisierte Verarbeitung auf entsprechende 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 jeder Methode 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.

Führen Sie den PostgreSQL-Befehl ALTER SYSTEM aus, um dieses Flag für eine Instanz festzulegen:

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

In AlloyDB Omni wird standardmäßig ein Thread für die Funktion für vektorisierte Joins zugewiesen. 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. 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 materialisierten Ansicht, die Sie manuell aktualisieren möchten.

Spaltenbasierte Engine deaktivieren

Wenn Sie die Columbar-Engine für eine Instanz deaktivieren möchten, setzen Sie das Flag google_columnar_engine.enabled auf off.

Die Schritte, die Sie zum Festlegen dieses Flags für eine Instanz ausführen, hängen davon ab, ob Sie AlloyDB Omni in einem Container auf einem einzelnen Server oder in einem Kubernetes-Cluster ausführen.

Einzelserver

So setzen Sie google_columnar_engine.enabled auf off:

  1. Führen Sie den PostgreSQL-Befehl ALTER SYSTEM aus:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. Damit die Konfigurationsparameteränderung wirksam wird, starten Sie den laufenden Container mit AlloyDB Omni neu.

Docker

Führen Sie den Befehl docker container restart 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 Befehl podman container start 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.

Kubernetes

Wenn Sie das Flag google_columnar_engine.enabled auf off setzen möchten, ändern Sie das Manifest Ihres Datenbankclusters, um dem Abschnitt primarySpec das Attribut parameters hinzuzufügen:

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: DBCluster
  metadata:
    name: CLUSTER_NAME
  spec:
    databaseVersion: "16.8.0"
    primarySpec:
      parameters:
        google_columnar_engine.enabled: "off"

Ersetzen Sie CLUSTER_NAME durch den Namen Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.

Nächste Schritte