Configurare il motore colonnare in AlloyDB Omni

Seleziona una versione della documentazione:

In questa pagina viene descritto come attivare o disattivare il motore colonnare su un cluster di database AlloyDB Omni. Inoltre, spiega come configurare una dimensione iniziale appropriata per l'archivio di colonne.

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

Abilita 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: "18.3.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.

Configura le dimensioni del datastore di colonne

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

La memoria e la cache di archiviazione insieme rappresentano 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.

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: "18.3.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 delle colonne, in megabyte, ad esempio 256.

Configura la cache di archiviazione

Puoi configurare la cache di archiviazione del motore colonnare su dispositivi condivisi o dedicati.

Kubernetes

Dispositivi condivisi

Per attivare la cache di archiviazione per il tuo database su dispositivi condivisi, 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: "18.3.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: le dimensioni 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: 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, sia per AlloyDB Omni in un container sia su un cluster Kubernetes. Per saperne di più sulle unità di misura, consulta Unità delle risorse di memoria.
  • STORAGE_CLASS_NAME: il nome della classe di archiviazione del volume della cache ultra veloce, ad esempio local-storage.

Dispositivi dedicati

Per impostazione predefinita, la cache di archiviazione del motore colonnare condivide gli stessi dispositivi della cache del disco di AlloyDB Omni. Tuttavia, puoi configurare il motore colonnare in modo che utilizzi i propri dispositivi dedicati per la cache di archiviazione per i seguenti motivi:

  • Non hai bisogno di una cache del disco perché lo spazio di archiviazione principale si trova già su SSD ad alte prestazioni. In questo scenario, puoi creare una cache di archiviazione del motore colonnare senza dover allocare spazio per una cache del disco.
  • Vuoi utilizzare supporti di archiviazione diversi per la cache del disco e la cache del motore colonnare. Ad esempio, potresti voler utilizzare un'unità SSD standard per la cache del disco e un'unità SSD NVMe con prestazioni più elevate per la cache del motore colonnare.
Utilizza un volume generico

Per configurare un dispositivo dedicato per la cache di archiviazione del motore colonnare, modifica il manifest DBCluster per aggiungere l'attributo columnarSpillToDisk alla sezione features. All'interno di columnarSpillToDisk, puoi quindi specificare un genericVolume con un storageClass che punta allo spazio di archiviazione che vuoi utilizzare per la cache del motore colonnare dedicato.

Di seguito è riportato un esempio di come configurare un dispositivo dedicato da 50 Gi per la cache di archiviazione del motore colonnare utilizzando una classe di archiviazione denominata local-ssd:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "18.3.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_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: le dimensioni della cache di archiviazione colonnare, ad esempio 50Gi. Se non specifichi un valore per questo campo, per impostazione predefinita il 5% della cache del disco viene allocato al motore colonnare.
  • STORAGE_CLASS_NAME: il nome della classe di archiviazione per il volume della cache del motore colonnare dedicato, ad esempio local-ssd.
Utilizza un volume temporaneo

Puoi configurare il motore colonnare in modo che utilizzi un volume emptyDir temporaneo per la cache di archiviazione. Un volume emptyDir viene creato quando un pod viene assegnato a un nodo ed esiste finché il pod è in esecuzione su quel nodo. Quando un pod viene rimosso da un nodo, i dati in emptyDir vengono eliminati in modo permanente.

Per configurare un volume emptyDir per la cache di archiviazione colonnare, modifica il manifest DBCluster per aggiungere l'attributo emptyDir alla sezione columnarSpillToDisk.

Ecco un esempio di come configurare un volume temporaneo per la cache di archiviazione colonnare:

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

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: le dimensioni della cache di archiviazione colonnare, ad esempio 50Gi.

Abilita join vettorizzato

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

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

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

Per impostare questo flag su un cluster di database Kubernetes, aggiungi google_columnar_engine.enable_vectorized_join: "on" alla sezione parameters del manifest DBCluster. Per saperne di più, consulta Configura i flag di database di AlloyDB Omni.

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

Aggiorna manualmente il motore colonnare

Per impostazione predefinita, quando il motore colonnare è abilitato, aggiorna l'archivio di colonne in background.

Per aggiornare manualmente il motore di colonne, esegui questa 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.

Disabilita il motore colonnare

Per disattivare il motore colonnare 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: "18.3.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.

Passaggi successivi