Configurare il motore colonnare in AlloyDB Omni

Seleziona una versione della documentazione:

Questa pagina descrive come attivare o disattivare il motore colonnare su un cluster di database AlloyDB Omni. Viene inoltre illustrato come configurare una dimensione iniziale appropriata per il column store.

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

Abilitare il motore colonnare

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

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.12.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 l'hai creato.

Configura le dimensioni dello spazio di archiviazione delle colonne

Quando il motore a colonne è abilitato 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 cache di memoria e di archiviazione insieme rappresentano la capacità complessiva del motore colonnare.

Configurare la memoria

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

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.12.0"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del tuo cluster di database. È lo stesso nome del cluster di database che hai dichiarato quando l'hai creato.
  • COLUMN_MEMORY_SIZE: la nuova dimensione dello spazio di archiviazione delle colonne, in megabyte, ad esempio 256.

Configura la cache di archiviazione

Kubernetes

Per attivare la cache di archiviazione per il tuo 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.12.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 tuo cluster di database. È lo stesso nome del cluster di database che hai dichiarato quando l'hai creato.
  • STORAGE_CACHE_SIZE: le dimensioni della cache di archiviazione colonnare, ad esempio 5Gi. Se non specifichi un valore per questo campo, per impostazione predefinita viene allocato il 5% della cache del disco al motore colonnare.
  • ULTRAFAST_CACHE_SIZE: le dimensioni della cache, ad esempio 100Gi. Deve essere superiore a 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 container sia su 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 ultra veloce, ad esempio local-storage.

Attiva unione vettorizzata

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

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

Per attivare il join vettoriale 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 comando PostgreSQL ALTER SYSTEM:

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

Per impostazione predefinita, AlloyDB Omni alloca un thread alla funzionalità di join vettoriale. 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 è abilitato, aggiorna l'archivio 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.

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.12.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 l'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 contenitore AlloyDB Omni. Il modo in cui esegui questa operazione 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 più grande per il flag --shm-size.

Correggere le colonne che non vengono compilate

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

  • 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 viste materializzate nella query si trovino nel motore colonnare.
  • Verifica l'utilizzo del motore colonnare utilizzando l'istruzione EXPLAIN.

Passaggi successivi