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.
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: "17.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 l'hai creato.
Configurare le dimensioni dell'archivio a colonne
Quando il motore colonnare è attivato 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à all'archivio 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.
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: "17.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 l'hai creato.COLUMN_MEMORY_SIZE: la nuova dimensione dell'archivio a colonne, in megabyte, ad esempio256.
Configurare 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 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: "17.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 l'hai creato.STORAGE_CACHE_SIZE: la dimensione della cache di archiviazione a colonne, ad esempio5Gi. 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 esempio100Gi. Deve essere maggiore dishared_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 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 esempiolocal-storage.
Dispositivi dedicati
Per impostazione predefinita, la cache di archiviazione del motore colonnare condivide gli stessi dispositivi della cache del disco 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é l'archivio principale è 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 SSD standard per la cache del disco e un SSD NVMe ad alte prestazioni per la cache del motore colonnare.
Utilizzare 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 una storageClass che rimanda all'archivio che vuoi utilizzare per la cache del motore colonnare dedicata.
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: "17.7.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 l'hai creato.STORAGE_CACHE_SIZE: la dimensione della cache di archiviazione a colonne, ad esempio50Gi. 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 esempiolocal-ssd.
Utilizzare 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 a colonne, modifica il manifest DBCluster per aggiungere l'attributo emptyDir alla sezione columnarSpillToDisk.
Di seguito è riportato un esempio di come configurare un volume temporaneo per la cache di archiviazione a colonne:
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 l'hai creato.STORAGE_CACHE_SIZE: la dimensione della cache di archiviazione a colonne, ad esempio50Gi.
Attivare 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 attivato 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 ogni metodo.
Per attivare il join vettorializzato su un'istanza, imposta il flag dell'istanza
google_columnar_engine.enable_vectorized_join
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 è attivato, aggiorna l'archivio a colonne in background.
Per aggiornare manualmente il motore a 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 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: "17.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 l'hai creato.
Passaggi successivi
Consulta l'elenco completo dei flag di database del motore colonnare.
Segui il tutorial Accelerazione delle query analitiche con il motore colonnare in AlloyDB Omni Google CodeLab.