Para obtener una descripción general conceptual del motor de columnas de AlloyDB, consulta Descripción general del motor de columnas de AlloyDB Omni.
Habilitar el motor columnar
Para usar el motor de columnas en una instancia, define la marca google_columnar_engine.enabled
de la instancia en on
.
Un solo servidor
Para definir el google_columnar_engine.enabled
en on
, sigue estos pasos:
Ejecuta el
ALTER SYSTEM
comando de PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
Si quieres ajustar la configuración del motor columnar, sigue las instrucciones de la sección siguiente 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 el cambio en los parámetros de configuración surta efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Configurar el tamaño del almacén de columnas
Mientras el motor en columnas está habilitado en una instancia, AlloyDB Omni asigna una parte de la memoria de la instancia para almacenar sus datos en columnas. Si asignas RAM de alta velocidad a tu almacén de columnas, te aseguras de que AlloyDB Omni pueda acceder a los datos de las columnas lo más rápido posible.
La memoria y la caché de almacenamiento representan juntas la capacidad general del motor en columnas.
Configurar la memoria
Puede asignar un tamaño fijo mediante la marca google_columnar_engine.memory_size_in_mb
.
Un solo servidor
Para definir la marca google_columnar_engine.memory_size_in_mb
en una instancia, haz lo siguiente:
Configura la memoria ejecutando el comando de PostgreSQL
ALTER SYSTEM
:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
Sustituye
COLUMN_MEMORY_SIZE
por el nuevo tamaño del almacenamiento de la columna, en megabytes (por ejemplo,256
).Para que el cambio en los parámetros de configuración surta efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Configurar la caché de almacenamiento
Un solo servidor
Puedes configurar la caché de almacenamiento del motor columnar en dispositivos dedicados o compartidos.
Dispositivos especializados
En los dispositivos dedicados, para habilitar la caché de almacenamiento del motor de columnas de AlloyDB Omni en un contenedor de un solo servidor, debes aprovisionar discos y crear un sistema de archivos. A continuación, monta el directorio de caché en AlloyDB Omni y, por último, habilita la caché de almacenamiento de columnas.
Aprovisionar discos y crear un sistema de archivos
Para aprovisionar discos y crear un sistema de archivos para la caché de almacenamiento del motor columnar de AlloyDB Omni, crea un sistema de archivos en un disco o en varios y móntalo en 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 cómo usar lvm
y ext4
en una instancia de Ubuntu Compute Engine con SSDs 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}
Haz los cambios siguientes:
STORAGE_PREFIX
: prefijo de la ruta de los discos locales de destino que están conectados a una máquina virtual mediante la interfaz Non-Volatile Memory Express (NVMe). Por ejemplo, en Google Cloud, las rutas de los dispositivos NVMe siempre empiezan por/dev/nvme0n
.VOLUME_GROUP
: nombre de un grupo de volúmenes en el que se combinan tus SSDs. 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
Sustituye
LOGICAL_VOLUME
por el nombre de un volumen lógico que el LVM trata como una partición (por ejemplo,omni_disk_cache_device
). - Crea el sistema de archivos
ext4
en el volumen lógico. Si es necesario, puedes especificar otras opciones deext4
sujetas a la seguridad de los datos.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
Para crear un directorio que sirva como punto de montaje en la máquina host y montar 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
Sustituye
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
por el nombre del directorio o la ruta al directorio que sirve como punto de montaje (por ejemplo,omni_columnar_storage_cache_directory
).
Montar el directorio de caché de almacenamiento en columnas en AlloyDB Omni
Antes de habilitar la caché de disco en AlloyDB Omni que se ejecuta en un contenedor, debes montar el directorio de caché en AlloyDB Omni.
Para obtener información sobre cómo instalar AlloyDB Omni desde una imagen de Docker y personalizarlo, consulta Personalizar la instalación de AlloyDB Omni.
Para montar el OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
en el 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
Haz los cambios siguientes:
CONTAINER_NAME
: el nombre que se asignará al nuevo contenedor de AlloyDB Omni. Por ejemplo,my-omni
.PASSWORD
: la contraseña del administrador raíz de tu base de datos PostgreSQL.DATA_DIR
: la ruta del sistema de archivos que quieres que AlloyDB Omni use para su directorio de datos.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: el directorio de caché del contenedor de AlloyDB Omni que se asigna al punto de montaje de la máquina host. Por ejemplo, en función del valor del directorio de caché del contenedor, puede ser/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
Haz los cambios siguientes:
CONTAINER_NAME
: el nombre que se asignará al nuevo contenedor de AlloyDB Omni. Por ejemplo,my-omni
.PASSWORD
: la contraseña del administrador raíz de tu base de datos PostgreSQL.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: el directorio de caché del contenedor de AlloyDB Omni que se asigna al punto de montaje de la máquina host. Por ejemplo, en función del valor del directorio de caché del contenedor, puede ser/omni_columnar_storage_cache_directory
, similar aOMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
, o/disk/cache/inside/container
.
Para conceder permisos de acceso completo al OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
montado, 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
Habilitar la caché de almacenamiento columnar de AlloyDB Omni para AlloyDB Omni que se ejecuta en un contenedor
Para habilitar la caché de almacenamiento columnar de AlloyDB Omni en dispositivos dedicados para tu base de datos, define los parámetros de configuración unificada general (GUC) adecuados después de verificar que se puede acceder al directorio de caché montado desde el contenedor Docker.
Define el directorio de la caché de almacenamiento en columnas:
ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
Sustituye
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
por la ruta absoluta al directorio dedicado en el que quieras que AlloyDB Omni almacene los archivos de caché de almacenamiento del motor columnar. Verifica que este directorio exista y que el usuario de la base de datos tenga los permisos de escritura adecuados.Configura el tamaño de la caché de almacenamiento:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
Sustituye
STORAGE_CACHE_SIZE
por el tamaño de la caché de almacenamiento en columnas que quieras (en megabytes). De forma predeterminada, se asigna todo el tamaño del dispositivo dedicado al motor columnar, sin que esto afecte a la caché de disco. El valor máximo permitido de esta marca es 1000 *google_columnar_engine.memory_size_in_mb
, o el valor mínimo.Para que el cambio en los parámetros de configuración surta efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Dispositivos compartidos
Antes de configurar la caché de almacenamiento columnar en dispositivos compartidos con caché de disco, debes habilitar la caché de 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;
Sustituye
STORAGE_CACHE_SIZE
por el tamaño de la caché de almacenamiento que quieras, en megabytes. De forma predeterminada, se asigna un 5% de la caché de disco al motor columnar. El valor máximo permitido de esta marca es el 50% de la caché de disco total o 1000 *google_columnar_engine.memory_size_in_mb
, el que sea menor.Para que el cambio en los parámetros de configuración surta efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Habilitar la combinación vectorizada
El motor en columnas tiene una función de unión vectorizada que puede mejorar el rendimiento de las uniones aplicando el 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 de hash estándar de PostgreSQL. El planificador toma esta decisión comparando el coste de ejecutar la consulta con cada método.
Para habilitar la unión vectorizada en una instancia, define la marca
google_columnar_engine.enable_vectorized_join
de la instancia en on
.
Para definir esta marca en una instancia, ejecuta el comando ALTER SYSTEM
de PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
AlloyDB Omni asigna un subproceso a la función de unión vectorizada de forma predeterminada. Puedes aumentar el número de hilos disponibles para esta función asignando un valor mayor a la marca google_columnar_engine.vectorized_join_threads
. El valor máximo es cpu_count * 2
.
Actualizar manualmente el motor de columnas
De forma predeterminada, cuando el motor columnar está habilitado, actualiza el almacén de columnas en segundo plano.
Para actualizar manualmente el motor de columnas, ejecuta la siguiente consulta de SQL:
SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');
Sustituye TABLE_NAME
por el nombre de la tabla o de la vista materializada que quieras actualizar manualmente.
Inhabilitar el motor columnar
Para inhabilitar el motor de palomares en una instancia, asigna el valor off
a la marca google_columnar_engine.enabled
.
Un solo servidor
Para definir el google_columnar_engine.enabled
en off
, sigue estos pasos:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- Para que el cambio en los parámetros de configuración surta efecto, reinicia el contenedor en ejecución con AlloyDB Omni.
Docker
Para reiniciar un contenedor de AlloyDB Omni, ejecuta el comando docker container restart
:
sudo docker restart CONTAINER_NAME
Sustituye CONTAINER_NAME
por el nombre que asignaste al contenedor de AlloyDB Omni al instalarlo.
Podman
Para reiniciar un contenedor de AlloyDB Omni, ejecuta el comando podman container start
:
sudo podman restart CONTAINER_NAME
Sustituye CONTAINER_NAME
por el nombre que asignaste al contenedor de AlloyDB Omni al instalarlo.
Siguientes pasos
Consulta la lista completa de marcas de bases de datos del motor columnar.
Sigue el tutorial Acelerar las consultas analíticas con el motor en columnas de AlloyDB Omni de Google CodeLab.