Configurare il motore colonnare in AlloyDB Omni

Questa pagina descrive come attivare o disattivare il motore colonnare in un cluster di database AlloyDB Omni. Inoltre, spiega come configurare una dimensione iniziale appropriata per il relativo magazzino delle colonne.

Per una panoramica concettuale del motore colonnare AlloyDB, consulta Panoramica del motore colonnare AlloyDB Omni.

Attivare il motore colonnare

Per utilizzare il motore colonnare in un'istanza, imposta il flag google_columnar_engine.enabled dell'istanza su on.

I passaggi da seguire per impostare questo flag su un'istanza dipendono dal fatto che AlloyDB Omni venga eseguito in un contenitore o in un cluster Kubernetes.

Single-server

Per impostare google_columnar_engine.enabled su on, segui questi passaggi:

  1. Esegui il comando PostgreSQL ALTER SYSTEM:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. Se vuoi modificare la configurazione del motore colonnare, segui le istruzioni riportate nella sezione successiva prima di riavviare il server di database. In caso contrario, completa il passaggio seguente per riavviare subito il server di database.

  3. Per applicare la modifica dei parametri di configurazione, riavvia il contenitore in esecuzione con AlloyDB Omni.

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

Kubernetes

Per impostare il flag google_columnar_engine.enabled su on, modifica il manifest del cluster di database per aggiungere l'attributo parameters alla sezione primarySpec:

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

Sostituisci CLUSTER_NAME con il nome del cluster di database. Si tratta dello stesso nome del cluster di database dichiarato al momento della creazione.

Configurare le dimensioni dell'archivio colonne

Quando il motore a colonne è abilitato in un'istanza, AlloyDB Omni alloca una parte della memoria dell'istanza per memorizzare i dati a colonne. Se dedichi RAM ad alta velocità allo spazio di archiviazione a colonne, AlloyDB Omni può accedere ai dati a colonne il più rapidamente possibile.

La cache della memoria e dello spazio di archiviazione rappresentano insieme la capacità complessiva del motore colonnare.

Configura la memoria

Puoi impostare l'allocazione su una dimensione fissa utilizzando il flag google_columnar_engine.memory_size_in_mb.

I passaggi da seguire per configurare la memoria dello spazio di archiviazione a colonne per AlloyDB Omni dipendono dal fatto che AlloyDB Omni venga eseguito in un contenitore o in un cluster Kubernetes.

Single-server

Per impostare il flag google_columnar_engine.memory_size_in_mb su un'istanza:

  1. Configura la memoria eseguendo il comando PostgreSQL ALTER SYSTEM:

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
    

    Sostituisci COLUMN_MEMORY_SIZE con la nuova dimensione dello spazio di archiviazione della colonna in megabyte, ad esempio 256.

  2. Per applicare la modifica dei parametri di configurazione, riavvia il contenitore in esecuzione con AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

Per impostare il flag google_columnar_engine.memory_size_in_mb, modifica il manifest del cluster di database per aggiungere l'attributo parameters alla sezione primarySpec:

    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"

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster di database. Si tratta dello stesso nome del cluster di database dichiarato al momento della creazione.
  • COLUMN_MEMORY_SIZE: le nuove dimensioni dello spazio di archiviazione della colonna, in megabyte, ad esempio 256.

Configura la cache dello spazio di archiviazione

Prima di configurare la cache di archiviazione, devi attivare la cache di disco AlloyDB Omni.

I passaggi da seguire per attivare la cache dello spazio di archiviazione per AlloyDB Omni dipendono dal fatto che AlloyDB Omni venga eseguito in un contenitore o in un cluster Kubernetes.

Single-server

  1. Configura la cache dello spazio di archiviazione nel seguente modo:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Sostituisci STORAGE_CACHE_SIZE con le dimensioni della cache dello spazio di archiviazione che preferisci, in megabyte. Per impostazione predefinita, il 5% della cache del disco viene allocato al motore colonnare. Il valore massimo consentito per questo flag è il 50% della cache del disco totale o 1000 * google_columnar_engine.memory_size_in_mb, a seconda del valore minimo.

  2. Per applicare la modifica dei parametri di configurazione, riavvia il contenitore in esecuzione con AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

Per attivare la cache dello spazio di archiviazione per il database, modifica il manifest del cluster di database per aggiungere l'attributo columnarSpillToDisk alla sezione features della sezione primarySpec:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster di database. Si tratta dello stesso nome del cluster di database dichiarato al momento della creazione.
  • STORAGE_CACHE_SIZE: le dimensioni della cache di archiviazione a colonne, ad esempio 5Gi. Se non specifichi un valore per questo campo, per impostazione predefinita il 5% della cache del disco viene allocato al motore colonnare.
  • ULTRAFAST_CACHE_SIZE: le dimensioni della cache, ad esempio 100Gi. Deve essere maggiore di shared_buffers. Questo campo è facoltativo. Se non specifichi il valore di questo campo, AlloyDB Omni utilizza tutto lo spazio rimanente sul disco, il che vale sia per AlloyDB Omni in un contenitore sia in un cluster Kubernetes. Per ulteriori informazioni sulle unità di misura, consulta Unità di risorse di memoria.
  • STORAGE_CLASS_NAME: il nome della classe di archiviazione del volume della cache ultraveloce, ad esempio local-storage.

Attivare l'unione vettore

Il motore colonnare dispone di una funzionalità di join vettoriale che può migliorare le prestazioni dei join applicando l'elaborazione vettoriale alle query idonee.

Dopo aver attivato l'unione vettoriale, lo schema di query di AlloyDB ha la possibilità di applicare l'operatore di unione vettoriale anziché l'operatore di unione hash PostgreSQL standard. Il pianificatore prende questa decisione confrontando il costo di esecuzione della query utilizzando ciascun metodo.

Per attivare l'unione vettore in un'istanza, imposta il flag google_columnar_engine.enable_vectorized_join dell'istanza su on.

Per impostare questo flag su un'istanza, esegui il comando ALTER SYSTEM PostgreSQL:

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

Per impostazione predefinita, AlloyDB Omni alloca un thread alla funzionalità di join vettorizzata. Puoi aumentare il numero di thread disponibili per questa funzionalità impostando il flag google_columnar_engine.vectorized_join_threads su un valore maggiore. Il valore massimo è cpu_count * 2.

Aggiornare manualmente il motore colonnare

Per impostazione predefinita, quando il motore colonnare è attivato, aggiorna il magazzino delle colonne in background.

Per aggiornare manualmente il motore delle colonne, esegui la seguente query SQL:

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

Sostituisci TABLE_NAME con il nome della tabella o della vista materializzata che vuoi aggiornare manualmente.

Disattivare il motore colonnare

Per disattivare il motore columbar su un'istanza, imposta il flag google_columnar_engine.enabled su off.

I passaggi da seguire per impostare questo flag su un'istanza dipendono dal fatto che AlloyDB Omni venga eseguito in un contenitore su un singolo server o su un cluster Kubernetes.

Single-server

Per impostare google_columnar_engine.enabled su off, segui questi passaggi:

  1. Esegui il comando PostgreSQL ALTER SYSTEM:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. Per applicare la modifica dei parametri di configurazione, riavvia il contenitore in esecuzione con AlloyDB Omni.

Docker

Per riavviare un contenitore AlloyDB Omni, esegui il comando docker container restart:

  sudo docker restart CONTAINER_NAME

Sostituisci CONTAINER_NAME con il nome assegnato al contenitore AlloyDB Omni durante l'installazione.

Podman

Per riavviare un contenitore AlloyDB Omni, esegui il comando podman container start:

  sudo podman restart CONTAINER_NAME

Sostituisci CONTAINER_NAME con il nome assegnato al contenitore AlloyDB Omni durante l'installazione.

Kubernetes

Per impostare il flag google_columnar_engine.enabled su off, modifica il manifest del cluster di database per aggiungere l'attributo parameters alla sezione primarySpec:

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

Sostituisci CLUSTER_NAME con il nome del cluster di database. Si tratta dello stesso nome del cluster di database dichiarato al momento della creazione.

Risolvere i problemi relativi al motore colonnare

Correggere l'errore insufficient shared memory

Se esegui AlloyDB Omni senza memoria condivisa sufficiente per il motore colonnare, potresti visualizzare questo errore:

Insufficient shared memory for generating the columnar formats.

Puoi risolvere il problema specificando la quantità di memoria condivisa disponibile per il contenitore AlloyDB Omni. Il modo in cui esegui questa operazione dipende dal sistema operativo host.

Linux

Aumenta le dimensioni della partizione /dev/shm della macchina host utilizzando una tecnica come la modifica del file /etc/fstab.

macOS

Installa un nuovo contenitore AlloyDB Omni, specificando un valore della memoria condivisa più grande per il flag --shm-size.

Correggere le colonne che non vengono compilate

Se le colonne non vengono compilate nel motore a colonne, potrebbe essere vera una delle seguenti condizioni:

  • Le colonne che vuoi aggiungere includono un tipo di dati non supportato.

  • I requisiti del motore colonnare non vengono soddisfatti.

Per risolvere il problema, prova quanto segue:

  • Verifica che le tabelle o le visualizzazioni materializzate nella query siano nel motore colonnare.
  • Verifica l'utilizzo del motore colonnare utilizzando l'istruzione EXPLAIN.

Passaggi successivi