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

Kubernetes

Wenn Sie das Flag google_columnar_engine.enabled auf on setzen möchten, ändern Sie das Manifest Ihres Datenbankclusters so, dass dem Abschnitt primarySpec das Attribut parameters hinzugefügt wird:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "15.12.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 auf 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 Speicher-Cache 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.

Kubernetes

Wenn Sie das Flag google_columnar_engine.memory_size_in_mb festlegen möchten, ändern Sie das Manifest Ihres Datenbankclusters so, dass dem Abschnitt primarySpec das Attribut parameters hinzugefügt wird:

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

Ersetzen Sie Folgendes:

Speicher-Cache konfigurieren

Kubernetes

Wenn Sie den Speicher-Cache für Ihre Datenbank aktivieren möchten, ändern Sie das Manifest Ihres Datenbankclusters 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.12.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 spaltenbasierten Speicher-Caches, z. B. 5Gi. Wenn Sie keinen Wert für dieses Feld angeben, werden standardmäßig 5% des Festplatten-Caches der spaltenbasierten Engine zugewiesen.
  • ULTRAFAST_CACHE_SIZE: die Größe des Caches, z. B. 100Gi. Er 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.

Vektorisierte Verknüpfung aktivieren

Die spaltenbasierte Engine hat eine Funktion für vektorisierte Verknüpfungen, mit der die Leistung von Verknüpfungen verbessert werden kann, indem die vektorisierte Verarbeitung auf entsprechende Abfragen angewendet wird.

Nachdem Sie die vektorisierte Verknüpfung aktiviert haben, kann der AlloyDB-Abfrageplaner den vektorisierten Verknüpfungsoperator anstelle des Standard-PostgreSQL-Hash-Verknüpfungsoperators 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 auf einer Instanz aktivieren möchten, legen Sie das google_columnar_engine.enable_vectorized_join Flag der Instanz auf on fest.

Wenn Sie dieses Flag für eine Instanz festlegen möchten, führen Sie den ALTER SYSTEM PostgreSQL-Befehl aus:

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

Standardmäßig weist AlloyDB Omni der Funktion für vektorisierte Verknüpfungen 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 festlegen. 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.

Wenn Sie die spaltenbasierte 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 spaltenbasierte Engine auf einer Instanz deaktivieren möchten, legen Sie das Flag google_columnar_engine.enabled auf off fest.

Kubernetes

Wenn Sie das Flag google_columnar_engine.enabled auf off setzen möchten, ändern Sie das Manifest Ihres Datenbankclusters so, dass dem Abschnitt primarySpec das Attribut parameters hinzugefügt wird:

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: DBCluster
  metadata:
    name: CLUSTER_NAME
  spec:
    databaseVersion: "15.12.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.

Fehlerbehebung bei der spaltenbasierten Engine

Fehler insufficient shared memory beheben

Wenn Sie AlloyDB Omni mit zu wenig gemeinsam genutztem Arbeitsspeicher für die spaltenbasierte 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 gemeinsam genutzten Arbeitsspeichers angeben, der für den AlloyDB Omni-Container verfügbar ist. Die Vorgehensweise hängt vom Betriebssystem des Hosts ab.

Linux

Erhöhen Sie die Größe der Partition /dev/shm Ihres Hostcomputers, z. B. durch Bearbeiten der Datei /etc/fstab.

macOS

Installieren Sie einen neuen AlloyDB Omni-Container, und geben Sie für das Flag --shm-size einen größeren Wert für den gemeinsam genutzten Arbeitsspeicher an.

Problem beheben, dass Spalten nicht gefüllt werden

Wenn Spalten in der spaltenbasierten Engine nicht gefüllt werden, kann einer der folgenden Gründe 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 beheben Sie dieses Problem:

  • Bestätigen Sie, dass sich die Tabellen oder materialisierten Ansichten in der Abfrage in der spaltenbasierten Engine befinden.
  • Prüfen Sie die Verwendung der spaltenbasierten Engine mit der EXPLAIN Anweisung.

Nächste Schritte