Spaltenbasierte Engine in AlloyDB Omni konfigurieren

Auf dieser Seite wird beschrieben, wie Sie die spaltenbasierte Engine in einem 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 AlloyDB-Spalten-Engine finden Sie unter AlloyDB Omni – Übersicht über die spaltenbasierte Engine.

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 zum Festlegen dieses Flags für eine Instanz hängen davon ab, ob Sie AlloyDB Omni in einem Container oder in einem Kubernetes-Cluster ausführen.

Ein Server

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. Andernfalls führen Sie den folgenden Schritt aus, um den Datenbankserver jetzt neu zu starten.

  3. Damit die Änderung der Konfigurationsparameter wirksam wird, müssen Sie den laufenden Container mit AlloyDB Omni neu starten.

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

Kubernetes

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

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

Ersetzen Sie CLUSTER_NAME durch den Namen Ihres Datenbankclusters. Dies ist derselbe Name des Datenbankclusters, den Sie beim Erstellen angegeben haben.

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 einen dedizierten Hochgeschwindigkeits-RAM zuweisen, kann AlloyDB Omni so schnell wie möglich auf die spaltenbasierten Daten zugreifen.

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

Arbeitsspeicher konfigurieren

Mit dem Flag google_columnar_engine.memory_size_in_mb können Sie die Größe der Zuweisung festlegen.

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

Ein Server

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 Änderung der Konfigurationsparameter wirksam wird, müssen Sie den laufenden Container mit AlloyDB Omni neu starten.

    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, indem Sie dem Abschnitt primarySpec das Attribut parameters hinzufügen:

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

Ersetzen Sie Folgendes:

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

Speichercache konfigurieren

Bevor Sie den Speichercache konfigurieren, müssen Sie den AlloyDB Omni-Laufwerkcache aktivieren.

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

Ein Server

  1. Konfigurieren Sie den Speichercache so:

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

  2. Damit die Änderung der Konfigurationsparameter wirksam wird, müssen Sie den laufenden Container mit AlloyDB Omni neu starten.

    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 Datenbankclustermanifest so, dass dem Abschnitt features des Abschnitts primarySpec das Attribut columnarSpillToDisk hinzugefügt wird:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "15.7.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. Dies ist derselbe Name des Datenbankclusters, den Sie beim Erstellen angegeben haben.
  • STORAGE_CACHE_SIZE: die Größe des spaltenbasierten Speichercaches, z. B. 5Gi. Wenn Sie keinen Wert für dieses Feld angeben, werden der spaltenorientierten Engine standardmäßig 5% des Laufwerkcaches zugewiesen.
  • ULTRAFAST_CACHE_SIZE: die Größe des Caches, 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 dem Laufwerk. 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 bietet die Funktion Vektorisierter Join, mit der sich die Leistung von Joins verbessern lässt, indem die vektorisierte Verarbeitung auf geeignete Abfragen angewendet wird.

Nachdem Sie den vektorisierten Join aktiviert haben, kann der AlloyDB-Abfrageplaner den vektorisierten Join-Operator anstelle des standardmäßigen PostgreSQL-Hash-Join-Operators anwenden. Dazu vergleicht der Planer die Kosten für die Ausführung der Abfrage mit den einzelnen Methoden.

Wenn Sie den vektorbasierten 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 der vektorisierten Join-Funktion standardmäßig ein Thread 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 Maximalwert ist cpu_count * 2.

Spaltenbasierte Engine manuell aktualisieren

Wenn die spaltenbasierte Engine aktiviert ist, wird der Spaltenspeicher standardmäßig im Hintergrund aktualisiert.

Wenn Sie die Spalten-Engine manuell aktualisieren möchten, führen Sie die folgende SQL-Abfrage aus:

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

Wie Sie dieses Flag für eine Instanz festlegen, hängt davon ab, ob Sie AlloyDB Omni in einem Container auf einem einzelnen Server oder in einem Kubernetes-Cluster ausführen.

Ein Server

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 Änderung der Konfigurationsparameter wirksam wird, müssen Sie den laufenden Container mit AlloyDB Omni neu starten.

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 google_columnar_engine.enabled-Flag auf off setzen möchten, ändern Sie das Manifest Ihres Datenbankclusters, indem Sie dem Abschnitt primarySpec das Attribut parameters hinzufügen:

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

Ersetzen Sie CLUSTER_NAME durch den Namen Ihres Datenbankclusters. Dies ist derselbe Name des Datenbankclusters, den Sie beim Erstellen angegeben haben.

Fehlerbehebung bei der spaltenbasierten Engine

Fehler insufficient shared memory beheben

Wenn Sie AlloyDB Omni ohne ausreichenden freigegebenen Arbeitsspeicher für die spaltenorientierte 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 freigegebenen Arbeitsspeichers angeben, die für den AlloyDB Omni-Container verfügbar ist. Wie Sie das tun, hängt vom Hostbetriebssystem ab.

Linux

Erhöhen Sie die Größe der /dev/shm-Partition Ihres Hosts, 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 gemeinsamen Speicher für das --shm-size-Flag an.

Problem beheben, wenn Spalten nicht ausgefüllt werden

Wenn Spalten in der spaltenorientierten Engine nicht ausgefüllt werden, trifft möglicherweise eine der folgenden Aussagen zu:

  • Die Spalten, die Sie hinzufügen möchten, enthalten einen nicht unterstützten Datentyp.

  • Die Anforderungen der spaltenbasierten Engine werden nicht erfüllt.

So beheben Sie dieses Problem:

  • Prüfen Sie, ob sich die Tabellen oder materialisierten Ansichten in der Anfrage in der spaltenorientierten Engine befinden.
  • Prüfen Sie mit der Anweisung EXPLAIN, ob die spaltenorientierte Engine verwendet wird.

Nächste Schritte