Configurare il motore colonnare in AlloyDB Omni

Select a documentation version:

Questa pagina descrive come attivare o disattivare il motore colonnare in un cluster di database AlloyDB Omni. Viene inoltre illustrato come configurare una dimensione iniziale appropriata per lo spazio di archiviazione a 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 su un'istanza, imposta il flag dell'istanza google_columnar_engine.enabled su on.

I passaggi da seguire per impostare questo flag su un'istanza variano a seconda che tu esegua AlloyDB Omni in un container o su un cluster Kubernetes.

Server singolo

Per impostare google_columnar_engine.enabled su on:

  1. Esegui il ALTER SYSTEM comando PostgreSQL:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. Se vuoi modificare la configurazione del motore colonnare, segui le istruzioni 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. Affinché la modifica dei parametri di configurazione abbia effetto, riavvia il container 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. È lo stesso nome del cluster di database che hai dichiarato quando lo hai creato.

Configurare le dimensioni del datastore a colonne

Quando il motore colonnare è attivo su un'istanza, AlloyDB Omni alloca una parte della memoria dell'istanza per archiviare i dati a colonne. L'allocazione di RAM ad alta velocità allo spazio di archiviazione a colonne garantisce che AlloyDB Omni possa accedere ai dati a colonne il più rapidamente possibile.

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

Configurare la memoria

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

I passaggi da seguire per impostare questo flag su un'istanza variano a seconda che tu esegua AlloyDB Omni in un container o su un cluster Kubernetes.

Server singolo

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 a colonne, in megabyte, ad esempio 256.

  2. Affinché la modifica dei parametri di configurazione abbia effetto, riavvia il container 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. È lo stesso nome del cluster di database che hai dichiarato quando lo hai creato.
  • COLUMN_MEMORY_SIZE: la nuova dimensione dello spazio di archiviazione a colonne, in megabyte, ad esempio 256.

Configurare la cache di archiviazione

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

I passaggi da seguire per impostare questo flag su un'istanza variano a seconda che tu esegua AlloyDB Omni in un container o su un cluster Kubernetes.

Server singolo

  1. Configura la cache di archiviazione come segue:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Sostituisci STORAGE_CACHE_SIZE con la dimensione della cache di archiviazione che vuoi, 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 di quale valore è inferiore.

  2. Affinché la modifica dei parametri di configurazione abbia effetto, riavvia il container in esecuzione con AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

Per abilitare la cache 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. È lo stesso nome del cluster di database che hai dichiarato quando lo hai creato.
  • STORAGE_CACHE_SIZE: la dimensione della cache di archiviazione colonnare, 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: la dimensione 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, sia per AlloyDB Omni in un container sia su un cluster Kubernetes. Per saperne di più sulle unità di misura, consulta Unità di risorse di memoria.
  • STORAGE_CLASS_NAME: il nome della classe di archiviazione del volume della cache ultra veloce, ad esempio local-storage.

Abilitare il join vettorializzato

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

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

Per abilitare il join vettorializzato su un'istanza, imposta il flag google_columnar_engine.enable_vectorized_join dell'istanza su on.

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

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

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

Aggiornare manualmente il motore colonnare

Per impostazione predefinita, quando il motore colonnare è abilitato, aggiorna lo spazio di archiviazione a colonne in background.

Per aggiornare manualmente il motore colonnare, 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 colonnare su un'istanza, imposta il flag google_columnar_engine.enabled su off.

I passaggi da seguire per impostare questo flag su un'istanza variano a seconda che tu esegua AlloyDB Omni in un container o su un cluster Kubernetes.

Server singolo

Per impostare google_columnar_engine.enabled su off:

  1. Esegui il ALTER SYSTEM comando PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. Affinché la modifica dei parametri di configurazione abbia effetto, riavvia il container in esecuzione con AlloyDB Omni.

Docker

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

  sudo docker restart CONTAINER_NAME

Sostituisci CONTAINER_NAME con il nome che hai assegnato al container AlloyDB Omni durante l'installazione.

Podman

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

  sudo podman restart CONTAINER_NAME

Sostituisci CONTAINER_NAME con il nome che hai assegnato al container 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. È lo stesso nome del cluster di database che hai dichiarato quando lo hai creato.

Risolvere i problemi del motore colonnare

Correggere l'errore insufficient shared memory

Se esegui AlloyDB Omni senza memoria condivisa sufficiente per l'utilizzo del motore colonnare, potresti visualizzare questo errore:

Insufficient shared memory for generating the columnar formats.

Puoi risolvere questo problema specificando la quantità di memoria condivisa disponibile per il container AlloyDB Omni. La procedura varia a seconda del 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 container AlloyDB Omni, specificando un valore di memoria condivisa maggiore per il --shm-size flag.

Correggere il problema delle colonne non popolate

Se le colonne non vengono popolate nel motore colonnare, potrebbe essere vero uno dei seguenti scenari:

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

  • I requisiti del motore colonnare non vengono soddisfatti.

Per risolvere questo problema, prova quanto segue:

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

Passaggi successivi