Per una panoramica concettuale del motore colonnare AlloyDB, consulta Panoramica del motore colonnare AlloyDB Omni.
Abilitare il motore colonnare
Per utilizzare il motore colonnare su un'istanza, imposta il flag dell'istanza
google_columnar_engine.enabled
su on.
Server singolo
Per impostare google_columnar_engine.enabled su on:
Esegui il
ALTER SYSTEMcomando PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'Se vuoi modificare la configurazione del motore colonnare, segui le istruzioni nella sezione successiva prima di riavviare il server di database. In caso contrario, completa il passaggio seguente 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_NAMEPodman
sudo podman restart CONTAINER_NAME
Configurare le dimensioni dell'archivio colonne
Quando il motore colonnare è abilitato su un'istanza, AlloyDB Omni alloca una parte della memoria dell'istanza per archiviare i dati colonnari. L'allocazione di RAM ad alta velocità all'archivio colonne garantisce che AlloyDB Omni possa accedere ai dati colonnari il più rapidamente possibile.
La cache di memoria e di archiviazione rappresenta 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.
Server singolo
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_SIZEcon la nuova dimensione dell'archivio 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
Configurare la cache di archiviazione
Server singolo
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 colonnare AlloyDB Omni per un container 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 colonnare.
Eseguire il provisioning dei dischi e creare un file system
Per fornire spazio di archiviazione per la cache di archiviazione del motore colonnare AlloyDB Omni, segui le istruzioni per il sistema operativo host per preparare un supporto di archiviazione, ad esempio un volume Docker denominato o un file system su dischi dedicati.
Non Linux (macOS, Windows)
Su macOS o Windows, utilizza un volume Docker denominato per la cache di archiviazione colonnare per garantire prestazioni ottimali.
-
Crea un volume denominato:
docker volume create COLUMNAR_CACHE_VOLUME
Sostituisci
COLUMNAR_CACHE_VOLUMEcon un nome per il volume, ad esempioomni-columnar-cache. -
Utilizza questo volume quando esegui il container. Per saperne di più, consulta Montare la directory della cache di archiviazione colonnare.
Linux
Per eseguire il provisioning dei dischi e creare un file system per la cache di archiviazione del motore colonnare AlloyDB Omni, crea un file system su uno o più dischi e lo monti all'interno di un container con AlloyDB Omni. Inoltre, puoi utilizzare utilità come mdadm o lvm per raggruppare la capacità utilizzando più dischi e utilizzare qualsiasi file system. I passaggi seguenti mostrano l'utilizzo di lvm e ext4 su un'istanza Compute Engine Ubuntu utilizzando 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 gli SSD sono combinati, ad esempioomni-disk-cache-volume.
-
Per creare un volume logico dalla capacità libera del gruppo di volumi del passaggio precedente, utilizza il comando seguente:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Sostituisci
LOGICAL_VOLUMEcon il nome di un volume logico trattato come una partizione da LVM, ad esempioomni_disk_cache_device. - Crea il file system
ext4sul volume logico. Se necessario, puoi specificare altre opzioniext4soggette 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 comando seguente:
sudo mkdir /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
Sostituisci
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORYcon il nome della directory o un percorso della directory che funge da punto di montaggio, ad esempioomni_columnar_storage_cache_directory.
Montare la directory della cache di archiviazione colonnare all'interno di AlloyDB Omni
Prima di abilitare la cache del disco per AlloyDB Omni in esecuzione in un container, devi montare la directory della cache all'interno di AlloyDB Omni.
Per montare la directory della cache all'interno del container, utilizza il flag -v.
Per i percorsi host Linux:
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINERPer i volumi denominati (non Linux):
-v COLUMNAR_CACHE_VOLUME:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Esempio di comando Docker che utilizza un volume denominato:
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 COLUMNAR_CACHE_VOLUME:/var/lib/alloydb/columnar_cache
-d google/alloydbomni
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 il comando seguente:
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 per l'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 per l'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
Abilitare la cache di archiviazione colonnare AlloyDB Omni per AlloyDB Omni in esecuzione in un container
Per abilitare la cache di archiviazione colonnare AlloyDB Omni sui 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 colonnare:
ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;Sostituisci
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORYcon 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_SIZEcon 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 è il valore minimo tra 1000 *google_columnar_engine.memory_size_in_mb.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
Dispositivi condivisi
Prima di configurare la cache di archiviazione colonnare sui dispositivi condivisi con la cache del disco, devi abilitare la cache del disco di AlloyDB Omni.
Configura la cache di archiviazione sui dispositivi condivisi come segue:
Configura la cache di archiviazione:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Sostituisci
STORAGE_CACHE_SIZEcon le dimensioni della cache di archiviazione che vuoi, in megabyte. Per impostazione predefinita, il 5% della cache del disco viene allocato al motore colonnare. Il valore massimo consentito per questo flag è il valore minimo tra il 50% della cache del disco totale o 1000 *google_columnar_engine.memory_size_in_mb.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
Abilitare 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 abilitato 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 abilitare il join vettorializzato 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 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 è abilitato, aggiorna l'archivio colonne in background.
Per aggiornare manualmente il motore colonnare, 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.
Disabilitare il motore colonnare
Per disabilitare il motore colonnare su un'istanza, imposta il flag google_columnar_engine.enabled su off.
Server singolo
Per impostare google_columnar_engine.enabled su off:
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 docker container restart comando:
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 podman container start comando:
sudo podman restart CONTAINER_NAMESostituisci CONTAINER_NAME con il nome che hai assegnato al container AlloyDB Omni durante l'installazione.
Passaggi successivi
Consulta l'elenco completo dei flag del database del motore colonnare.
Prova il codelab Accelerazione delle query analitiche con il motore colonnare in AlloyDB Omni.