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.
I passaggi per impostare questo flag su un'istanza dipendono dal fatto che tu esegua AlloyDB Omni in un container o su un cluster Kubernetes.
Server singolo
Per impostare google_columnar_engine.enabled su on, segui questi passaggi:
Esegui il comando PostgreSQL
ALTER SYSTEM:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'Se vuoi modificare la configurazione del motore colonnare, segui le istruzioni riportate nella sezione successiva prima di riavviare il server del database. In caso contrario, completa il passaggio seguente per riavviare il server del database ora.
Affinché la modifica dei parametri di configurazione diventi effettiva, riavvia il container in esecuzione con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
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.1"
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, AlloyDB Omni può 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.
I passaggi per impostare questo flag su un'istanza dipendono dal fatto 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, segui questi passaggi:
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_SIZEcon la nuova dimensione dello spazio di archiviazione delle colonne, in megabyte, ad esempio256.Affinché la modifica dei parametri di configurazione diventi effettiva, riavvia il container in esecuzione con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
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.1"
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 esempio256.
Configura la cache di archiviazione
Prima di configurare la cache di archiviazione, devi abilitare la cache del disco di AlloyDB Omni.
I passaggi per impostare questo flag su un'istanza dipendono dal fatto che tu esegua AlloyDB Omni in un container o su un cluster Kubernetes.
Server singolo
Configura la cache di archiviazione come segue:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Sostituisci
STORAGE_CACHE_SIZEcon le dimensioni della cache di archiviazione che preferisci, in megabyte. Per impostazione predefinita, il 5% della cache del disco è 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 sia il valore minimo.Affinché la modifica dei parametri di configurazione diventi effettiva, riavvia il container in esecuzione con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
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.7.1"
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 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: le dimensioni della cache, ad esempio100Gi. Deve essere superiore ashared_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 esempiolocal-storage.
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.
ALTER SYSTEM:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
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.
I passaggi per impostare questo flag su un'istanza dipendono dal fatto che tu esegua AlloyDB Omni in un container o su un cluster Kubernetes.
Server singolo
Per impostare google_columnar_engine.enabled su off, segui questi passaggi:
- Esegui il comando PostgreSQL
ALTER SYSTEM:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- Affinché la modifica dei parametri di configurazione diventi effettiva, riavvia il container in esecuzione con AlloyDB Omni.
Docker
Per riavviare un container AlloyDB Omni, esegui il comando docker container restart:
sudo docker restart CONTAINER_NAMESostituisci CONTAINER_NAME con il nome che hai assegnato al container AlloyDB Omni durante l'installazione.
Podman
Per riavviare un container AlloyDB Omni, esegui il comando podman container start:
sudo podman restart CONTAINER_NAMESostituisci 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.1"
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.
Risolvi i problemi relativi al motore colonnare
Correggi 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 modalità di esecuzione di 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.
Correggi le colonne non compilate
Se le colonne non vengono compilate nel motore colonnare, 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 sono 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
Consulta l'elenco completo dei flag di database del motore colonnare.
Segui il tutorial di Google Codelab Accelerazione delle query analitiche con il motore colonnare in AlloyDB Omni.