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.

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: "18.4.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 in einer Instanz aktiviert ist, weist AlloyDB Omni einen Teil des Arbeitsspeichers der Instanz zu, um die spaltenbasierten Daten zu speichern. Wenn Sie Hochgeschwindigkeits-RAM für Ihren Spaltenspeicher verwenden, 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

Mit dem google_columnar_engine.memory_size_in_mb Flag können Sie die Zuweisung 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, um dem Abschnitt primarySpec das Attribut parameters hinzuzufügen:

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

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

Kubernetes

Gemeinsam verwendete Geräte

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

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "18.4.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 Speichercaches, z. B. 5Gi. Wenn Sie für dieses Feld keinen Wert angeben, werden standardmäßig 5% des Datenträger-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 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 StorageClass des ultraschnellen Cache-Volumes, z. B. local-storage.

Zweckbestimmte Geräte

Standardmäßig verwendet der Speichercache der spaltenbasierten Engine dieselben Geräte wie der Laufwerkscache von AlloyDB Omni. Sie können die spaltenbasierte Engine jedoch so konfigurieren, dass sie eigene zweckbestimmte Geräte für den Speichercache verwendet. Das kann aus folgenden Gründen sinnvoll sein:

  • Sie benötigen keinen Datenträger-Cache, da sich Ihr primärer Speicher bereits auf leistungsstarken SSDs befindet. In diesem Fall können Sie einen Speichercache für die spaltenbasierte Engine erstellen, ohne Speicherplatz für einen Laufwerkscache zu reservieren.
  • Sie möchten unterschiedliche Speichermedien für Ihren Datenträger-Cache und den Cache der spaltenbasierten Engine verwenden. Beispielsweise können Sie eine Standard-SSD für Ihren Datenträger-Cache und eine leistungsstärkere NVMe-SSD für den Cache der spaltenbasierten Engine verwenden.
Generisches Volume verwenden

Wenn Sie ein zweckbestimmtes Gerät für den Speichercache der spaltenbasierten Engine konfigurieren möchten, ändern Sie das Manifest DBCluster, um dem Abschnitt features das Attribut columnarSpillToDisk hinzuzufügen. In columnarSpillToDisk können Sie dann ein genericVolume mit einer storageClass angeben, die auf den Speicher verweist, den Sie für den zweckbestimmten Cache der spaltenbasierten Engine verwenden möchten.

Hier ein Beispiel für die Konfiguration eines 50-GiB-zweckbestimmten Geräts für den Speichercache der spaltenbasierten Engine mit einer Speicherklasse namens „local-ssd“:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "18.4.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_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 Speichercaches, z. B. 50Gi. Wenn Sie für dieses Feld keinen Wert angeben, werden standardmäßig 5% des Datenträger-Caches der spaltenbasierten Engine zugewiesen.
  • STORAGE_CLASS_NAME: der Name der StorageClass für das zweckbestimmte Cache-Volume der spaltenbasierten Engine, z. B. local-ssd.
Sitzungsspezifisches Volume verwenden

Sie können die spaltenbasierte Engine so konfigurieren, dass sie ein sitzungsspezifisches emptyDir-Volume für den Speichercache verwendet. Ein emptyDir-Volume wird erstellt, wenn ein Pod einem Knoten zugewiesen wird, und es ist so lange vorhanden, wie dieser Pod auf diesem Knoten ausgeführt wird. Wenn ein Pod von einem Knoten entfernt wird, werden die Daten in emptyDir dauerhaft gelöscht.

Wenn Sie ein emptyDir-Volume für den spaltenbasierten Speichercache konfigurieren möchten, ändern Sie das Manifest DBCluster, um dem Abschnitt columnarSpillToDisk das Attribut emptyDir hinzuzufügen.

Hier ein Beispiel für die Konfiguration eines sitzungsspezifischen Volumes für den spaltenbasierten Speichercache:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "17.5.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: 50Gi
        emptyDir: {}

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 Speichercaches, z. B. 50Gi.

Vektorisierte Verknüpfung aktivieren

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

Nachdem Sie die vektorisierte Verknüpfung aktiviert haben, kann der AlloyDB-Abfrageplaner den Operator für vektorisierte Verknüpfungen 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 in einer Instanz aktivieren möchten, setzen Sie das Flag google_columnar_engine.enable_vectorized_join der Instanz auf on.

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 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.

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

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: "18.4.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