Para obtener una descripción general conceptual del motor de columnas de AlloyDB, consulta Descripción general del motor de columnas de AlloyDB Omni.
Habilita el motor de columnas
Para usar el motor de columnas en una instancia, establece la marca
google_columnar_engine.enabled
de la instancia en on.
Servidor único
Para establecer google_columnar_engine.enabled en on, sigue estos pasos:
Ejecuta el
ALTER SYSTEMcomando de PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'Si deseas ajustar la configuración del motor de columnas, sigue las instrucciones de la siguiente sección antes de reiniciar el servidor de la base de datos. De lo contrario, completa el siguiente paso para reiniciar el servidor de la base de datos ahora.
Para que los cambios en los parámetros de configuración surtan efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Configura el tamaño del almacén de columnas
Mientras el motor de columnas está habilitado en una instancia, AlloyDB Omni asigna una parte de la memoria de la instancia para almacenar sus datos de columnas. Si dedicas RAM de alta velocidad a tu almacén de columnas, se verifica que AlloyDB Omni pueda acceder a los datos de columnas lo más rápido posible.
La memoria y la caché de almacenamiento juntas representan la capacidad general del motor de columnas.
Configura la memoria
Puedes establecer la asignación en un tamaño fijo con el
google_columnar_engine.memory_size_in_mb parámetro.
Servidor único
Para establecer la marca google_columnar_engine.memory_size_in_mb en una instancia, haz lo siguiente:
Para configurar la memoria, ejecuta el comando
ALTER SYSTEMde PostgreSQL:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;Reemplaza
COLUMN_MEMORY_SIZEpor el nuevo tamaño del almacenamiento de columnas, en megabytes, por ejemplo,256.Para que los cambios en los parámetros de configuración surtan efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Configura la caché de almacenamiento
Servidor único
Puedes configurar la caché de almacenamiento del motor de columnas en dispositivos dedicados o compartidos.
Dispositivos de uso específico
En dispositivos de uso específico, para habilitar la caché de almacenamiento del motor de columnas de AlloyDB Omni para un contenedor de un solo servidor, debes aprovisionar discos y crear un sistema de archivos, luego activar el directorio de caché dentro de AlloyDB Omni y, por último, habilitar la caché de almacenamiento de columnas.
Aprovisiona discos y crea un sistema de archivos
Para proporcionar almacenamiento para la caché de almacenamiento del motor de columnas de AlloyDB Omni, sigue las instrucciones de tu sistema operativo host para preparar un medio de almacenamiento, como un volumen de Docker con nombre o un sistema de archivos en discos dedicados.
Sistemas operativos que no son Linux (macOS, Windows)
En macOS o Windows, usa un volumen de Docker con nombre para la caché de almacenamiento de columnas para garantizar un rendimiento óptimo.
-
Crea un volumen con nombre:
docker volume create COLUMNAR_CACHE_VOLUME
Reemplaza
COLUMNAR_CACHE_VOLUMEpor un nombre para el volumen, por ejemplo,omni-columnar-cache. -
Usa este volumen cuando ejecutes tu contenedor. Para obtener más información, consulta Activa el directorio de caché de almacenamiento de columnas.
Linux
Para aprovisionar discos y crear un sistema de archivos para la caché de almacenamiento del motor de columnas de AlloyDB Omni, crea un sistema de archivos en un disco o en varios discos y lo activa dentro de un contenedor con AlloyDB Omni. Además, puedes usar utilidades como mdadm o lvm para agrupar la capacidad con varios discos y usar cualquier sistema de archivos. En los siguientes pasos, se muestra el uso de lvm y ext4 en una instancia de Compute Engine de Ubuntu con SSD NVMe.
Crea un grupo de volúmenes a partir de todos los dispositivos físicos disponibles:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
Reemplaza lo siguiente:
STORAGE_PREFIX: Es el prefijo de la ruta de acceso de los discos locales de destino que se adjuntan a una máquina virtual con la interfaz de memoria no volátil express (NVMe). Por ejemplo, en Google Cloud, las rutas de acceso de los dispositivos NVMe siempre comienzan con/dev/nvme0n.VOLUME_GROUP: Es el nombre de un grupo de volúmenes en el que se combinan tus SSD, por ejemplo,omni-disk-cache-volume.
-
Para crear un volumen lógico a partir de la capacidad libre del grupo de volúmenes del paso anterior, usa el siguiente comando:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Reemplaza
LOGICAL_VOLUMEpor el nombre de un volumen lógico que LVM trata como una partición, por ejemplo,omni_disk_cache_device. - Crea el sistema de archivos
ext4en el volumen lógico. Si es necesario, puedes especificar otras opciones deext4sujetas a la seguridad de los datos.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
Para crear un directorio que sirva como punto de activación en la máquina anfitrión y activar el sistema de archivos, usa el siguiente comando:
sudo mkdir /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
Reemplaza
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORYpor el nombre del directorio o una ruta de acceso al directorio que sirve como punto de activación, por ejemplo,omni_columnar_storage_cache_directory.
Activa el directorio de caché de almacenamiento de columnas dentro de AlloyDB Omni
Antes de habilitar la memoria caché del disco para AlloyDB Omni que se ejecuta en un contenedor, debes activar el directorio de caché dentro de AlloyDB Omni.
Para activar el directorio de caché dentro de tu contenedor, usa la marca -v.
Para rutas de acceso de host de Linux:
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINERPara volúmenes con nombre (que no son Linux):
-v COLUMNAR_CACHE_VOLUME:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Ejemplo de comando de Docker con un volumen con nombre:
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
Para obtener información sobre cómo instalar AlloyDB Omni desde una imagen de Docker y personalizarla, consulta Personaliza tu instalación de AlloyDB Omni.
Para activar OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY dentro de tu contenedor de Docker que ejecuta AlloyDB Omni, usa el siguiente 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
Reemplaza lo siguiente:
CONTAINER_NAME: Es el nombre que se le asignará al nuevo contenedor de AlloyDB Omni, por ejemplo,my-omni.PASSWORD: Es la contraseña del administrador raíz de la base de datos de PostgreSQL.DATA_DIR: Es la ruta de acceso del sistema de archivos que deseas que AlloyDB Omni use para su directorio de datos.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: Es el directorio de caché dentro del contenedor de AlloyDB Omni que se asigna al punto de activación en la máquina anfitrión, por ejemplo, según el valor del directorio de caché dentro del contenedor, ya sea/omni_disk_cache_directory, similar 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
Reemplaza lo siguiente:
CONTAINER_NAME: Es el nombre que se le asignará al nuevo contenedor de AlloyDB Omni, por ejemplo,my-omni.PASSWORD: Es la contraseña del administrador raíz de la base de datos de PostgreSQL.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: Es el directorio de caché dentro del contenedor de AlloyDB Omni que se asigna al punto de activación en la máquina anfitrión, por ejemplo, según el valor del directorio de caché dentro del contenedor, ya sea/omni_columnar_storage_cache_directory, similar aOMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, o/disk/cache/inside/container.
Para otorgar permisos de acceso completo al OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY activado, usa los siguientes comandos:
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
Habilita la caché de almacenamiento de columnas de AlloyDB Omni para AlloyDB Omni que se ejecuta en un contenedor
Para habilitar la caché de almacenamiento de columnas de AlloyDB Omni en dispositivos dedicados para tu base de datos, establece los parámetros adecuados de Grand Unified Configuration (GUC) después de verificar que se pueda acceder al directorio de caché activado desde el interior del contenedor de Docker.
Establece el directorio de caché de almacenamiento de columnas:
ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;Reemplaza
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORYpor la ruta de acceso absoluta al directorio dedicado en el que deseas que AlloyDB Omni almacene los archivos de caché de almacenamiento del motor de columnas. Verifica que este directorio exista y tenga los permisos de escritura adecuados para el usuario de la base de datos.Configura el tamaño de la caché de almacenamiento:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Reemplaza
STORAGE_CACHE_SIZEpor el tamaño de la caché de almacenamiento de columnas que deseas, en megabytes. De forma predeterminada, todo el tamaño del dispositivo de uso específico se asigna al motor de columnas, sin afectar la memoria caché del disco. El valor máximo permitido para esta marca es 1,000 *google_columnar_engine.memory_size_in_mb, lo que sea menor.Para que los cambios en los parámetros de configuración surtan efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Dispositivos compartidos
Antes de configurar la caché de almacenamiento de columnas en dispositivos compartidos con memoria caché del disco, debes habilitar la memoria caché del disco de AlloyDB Omni.
Configura la caché de almacenamiento en dispositivos compartidos de la siguiente manera:
Configura la caché de almacenamiento:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Reemplaza
STORAGE_CACHE_SIZEpor el tamaño de la caché de almacenamiento que deseas, en megabytes. De forma predeterminada, el 5% de la memoria caché del disco se asigna al motor de columnas. El valor máximo permitido para este parámetro es el 50% de la memoria caché del disco total o 1,000 *google_columnar_engine.memory_size_in_mb, lo que sea menor.Para que los cambios en los parámetros de configuración surtan efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Habilita la unión vectorizada
El motor de columnas tiene una función de unión vectorizada que puede mejorar el rendimiento de las uniones mediante la aplicación de procesamiento vectorizado a las consultas aptas.
Después de habilitar la unión vectorizada, el planificador de consultas de AlloyDB tiene la opción de aplicar el operador de unión vectorizada en lugar del operador de unión hash de PostgreSQL estándar. El planificador toma esta decisión comparando el costo de ejecutar la consulta con cada método.
Para habilitar la unión vectorizada en una instancia, establece la marca
google_columnar_engine.enable_vectorized_join
de la instancia en on.
Para establecer esta marca en una instancia, ejecuta el comando ALTER SYSTEM de PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
De forma predeterminada, AlloyDB Omni asigna un subproceso a la función de unión vectorizada. Puedes aumentar la cantidad de subprocesos disponibles para
esta función si estableces la
google_columnar_engine.vectorized_join_threads
marca en un valor más grande. El valor máximo es cpu_count * 2.
Actualiza manualmente tu motor de columnas
De forma predeterminada, cuando el motor de columnas está habilitado, actualiza el almacén de columnas en segundo plano.
Para actualizar manualmente el motor de columnas, ejecuta la siguiente consulta en SQL:
SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');
Reemplaza TABLE_NAME por el nombre de la tabla o la vista materializada que deseas actualizar de forma manual.
Inhabilita el motor de columnas
Para inhabilitar el motor de columnas en una instancia, establece la marca google_columnar_engine.enabled en off.
Servidor único
Para establecer google_columnar_engine.enabled en off, sigue estos pasos:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- Para que los cambios en los parámetros de configuración surtan efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
Para reiniciar un contenedor de AlloyDB Omni, ejecuta el docker container restart comando:
sudo docker restart CONTAINER_NAMEReemplaza CONTAINER_NAME por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Podman
Para reiniciar un contenedor de AlloyDB Omni, ejecuta el podman container start comando:
sudo podman restart CONTAINER_NAMEReemplaza CONTAINER_NAME por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
¿Qué sigue?
Consulta la lista completa de marcas de base de datos del motor de columnas.
Realiza el instructivo de Google CodeLab Acelera las consultas analíticas con el motor de columnas en AlloyDB Omni.