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
.
I passaggi utilizzati per impostare questo flag su un'istanza dipendono dall'esecuzione di AlloyDB Omni in un container o su un cluster Kubernetes.
A un solo server
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 di database. In caso contrario, completa il seguente passaggio per riavviare subito il server di database.
Affinché la modifica dei parametri di configurazione diventi effettiva, 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: "16.8.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 verifica 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
.
I passaggi che utilizzi per configurare la memoria dello spazio di archiviazione a colonne per AlloyDB Omni dipendono dal fatto che esegui AlloyDB Omni in un container o in un cluster Kubernetes.
A un solo server
Per impostare il flag google_columnar_engine.memory_size_in_mb
su un'istanza:
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 le nuove dimensioni dello spazio di archiviazione della colonna, 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_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: "16.8.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 dell'archiviazione delle colonne, in megabyte, ad esempio256
.
Configura la cache di archiviazione
I passaggi utilizzati per configurare la cache di archiviazione del motore colonnare per AlloyDB Omni dipendono dal fatto che esegui AlloyDB Omni in un container o su un cluster Kubernetes.
A un solo server
Puoi configurare la cache di archiviazione del motore colonnare su dispositivi dedicati o condivisi.
Dispositivi dedicati
Sui dispositivi dedicati, per abilitare la cache di archiviazione del motore di archiviazione a colonne di AlloyDB Omni per un contenitore a server singolo, devi eseguire il provisioning dei dischi e creare un file system, quindi montare la directory della cache all'interno di AlloyDB Omni e infine abilitare la cache di archiviazione a colonne.
Esegui il provisioning dei dischi e crea un file system
Per eseguire il provisioning dei dischi e creare un file system per la cache di archiviazione del motore colonnare di AlloyDB Omni, crea un file system su uno o più dischi e lo monta all'interno di un container con AlloyDB Omni. Inoltre, puoi utilizzare utilità come mdadm
o lvm
per raggruppare la capacità utilizzando più dischi e qualsiasi file system. I seguenti passaggi mostrano l'utilizzo di lvm
e ext4
su un'istanza Compute Engine Ubuntu che utilizza unità SSD NVMe.
Crea un gruppo di volumi da tutti i dispositivi fisici disponibili:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
Sostituisci quanto segue:
STORAGE_PREFIX
: il prefisso del percorso dei dischi locali di destinazione collegati a una macchina virtuale utilizzando l'interfaccia NVMe (Nonvolatile Memory Express). Ad esempio, su Google Cloud, i percorsi dei dispositivi NVMe iniziano sempre con/dev/nvme0n
.VOLUME_GROUP
: il nome di un gruppo di volumi in cui sono combinate le unità SSD, ad esempioomni-disk-cache-volume
.
-
Per creare un volume logico dalla capacità libera del gruppo di volumi del passaggio precedente, utilizza il seguente comando:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Sostituisci
LOGICAL_VOLUME
con il nome di un volume logico trattato come partizione da LVM, ad esempioomni_disk_cache_device
. - Crea il file system
ext4
sul volume logico. Se necessario, puoi specificare altre opzioni diext4
soggette alla sicurezza dei dati.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
Per creare una directory che funga da punto di montaggio sulla macchina host e montare il file system, utilizza il seguente comando:
sudo mkdir /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
Sostituisci
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
con il nome della directory o un percorso alla directory che funge da punto di montaggio, ad esempioomni_columnar_storage_cache_directory
.
Monta la directory della cache di archiviazione colonnare all'interno di AlloyDB Omni
Prima di attivare la cache del disco per AlloyDB Omni in esecuzione in un container, devi montare la directory della cache all'interno di AlloyDB Omni.
Per informazioni sull'installazione di AlloyDB Omni da un'immagine Docker e sulla sua personalizzazione, consulta Personalizzare l'installazione di AlloyDB Omni.
Per montare OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
all'interno del container Docker che esegue AlloyDB Omni, utilizza questo comando:
Docker
sudo docker run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni
Sostituisci quanto segue:
CONTAINER_NAME
: il nome da assegnare al nuovo container AlloyDB Omni, ad esempiomy-omni
.PASSWORD
: la password dell'amministratore root del database PostgreSQL.DATA_DIR
: il percorso del file system che vuoi che AlloyDB Omni utilizzi per la directory dei dati.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: la directory della cache all'interno del container AlloyDB Omni che esegue il mapping al punto di montaggio sulla macchina host, ad esempio in base al valore della directory della cache all'interno del container,/omni_disk_cache_directory
, simile aOMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
, o/disk/cache/inside/container
.
Podman
podman run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni
Sostituisci quanto segue:
CONTAINER_NAME
: il nome da assegnare al nuovo container AlloyDB Omni, ad esempiomy-omni
.PASSWORD
: la password dell'amministratore root del database PostgreSQL.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: la directory della cache all'interno del container AlloyDB Omni che esegue il mapping al punto di montaggio sulla macchina host, ad esempio in base al valore della directory della cache all'interno del container,/omni_columnar_storage_cache_directory
, simile aOMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
, o/disk/cache/inside/container
.
Per concedere le autorizzazioni di accesso completo a OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
montato, utilizza i seguenti comandi:
Docker
sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo docker exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Podman
sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo podman exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Abilita la cache di archiviazione colonnare di AlloyDB Omni per AlloyDB Omni in esecuzione in un container
Per attivare la cache di archiviazione colonnare di AlloyDB Omni su dispositivi dedicati per il tuo database, imposta i parametri GUC (Grand Unified Configuration) appropriati dopo aver verificato che la directory della cache montata sia accessibile dall'interno del container Docker.
Imposta la directory della cache di archiviazione a colonne:
ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
Sostituisci
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
con il percorso assoluto della directory dedicata in cui vuoi che AlloyDB Omni memorizzi i file della cache di archiviazione del motore colonnare. Verifica che questa directory esista e disponga delle autorizzazioni di scrittura appropriate per l'utente del database.Configura le dimensioni della cache di archiviazione:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
Sostituisci
STORAGE_CACHE_SIZE
con le dimensioni della cache di archiviazione colonnare che vuoi, in megabyte. Per impostazione predefinita, l'intera dimensione del dispositivo dedicato viene allocata al motore colonnare, senza influire sulla cache del disco. Il valore massimo consentito per questo flag è 1000 *google_columnar_engine.memory_size_in_mb
, a seconda di quale dei due è il minimo.Affinché la modifica dei parametri di configurazione diventi effettiva, riavvia il container in esecuzione con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Dispositivi condivisi
Prima di configurare la cache di archiviazione colonnare per i dispositivi condivisi con la cache su disco, devi attivare la cache su disco di AlloyDB Omni.
Configura la cache di archiviazione sui dispositivi condivisi nel seguente modo:
Configura la cache di archiviazione:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
Sostituisci
STORAGE_CACHE_SIZE
con le dimensioni della cache di archiviazione che preferisci, 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 dei due valori è inferiore.Affinché la modifica dei parametri di configurazione diventi effettiva, riavvia il container in esecuzione con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAME
Podman
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: "16.8.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 esempio5Gi
. 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 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, il che vale sia per AlloyDB Omni in un container sia in 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 ultraveloce, ad esempiolocal-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 vettorizzato 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.
Disabilita il motore colonnare
Per disattivare il motore columbar su un'istanza, imposta il flag google_columnar_engine.enabled
su off
.
I passaggi utilizzati per impostare questo flag su un'istanza dipendono dal fatto che tu esegua AlloyDB Omni in un container su un singolo server o su un cluster Kubernetes.
A un solo server
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_NAME
Sostituisci CONTAINER_NAME
con il nome 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_NAME
Sostituisci CONTAINER_NAME
con il nome 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: "16.8.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 del database del motore di colonne.
Segui il tutorial di Google CodeLab Accelerazione delle query analitiche con il motore colonnare in AlloyDB Omni.