Para usar el motor columnar cuando uses AlloyDB para PostgreSQL en Google Cloud, consulta Cómo configurar el motor columnar.
Para obtener una descripción general conceptual del motor de columnas de AlloyDB, consulta Acerca del motor de columnas de AlloyDB.
Habilita el motor de columnas
Para usar el motor columnar en una instancia, establece la marca google_columnar_engine.enabled
de la instancia en on
.
Para configurar esta marca en una instancia, haz lo siguiente:
Ejecuta el comando
ALTER SYSTEM
de PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
Si deseas ajustar la configuración del motor columnar, sigue las instrucciones de la siguiente sección antes de reiniciar el servidor de la base de datos. De lo contrario, sigue los dos pasos siguientes para reiniciar el servidor de la base de datos ahora.
Configura el tamaño del almacén de columnas
Mientras el motor de columnas está habilitado en una instancia, AlloyDB asigna una parte de la memoria de la instancia para almacenar sus datos de columnas. Dedicar RAM de alta velocidad a tu almacén de columnas garantiza que AlloyDB pueda acceder a los datos de columnas lo más rápido posible.
También puedes establecer la asignación en un tamaño fijo y específico con la marca google_columnar_engine.memory_size_in_mb
.
Para configurar esta marca en una instancia, haz lo siguiente:
Ejecuta el comando
ALTER SYSTEM
de PostgreSQL:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;
Reemplaza
COLUMN_STORE_SIZE
por el nuevo tamaño del almacén de columnas, en megabytes.
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 aplicando el procesamiento vectorizado a las consultas aptas.
Después de habilitar la unión vectorizada, el optimizador de consultas de AlloyDB tiene la opción de aplicar el operador de unión vectorizada en lugar del operador de unión hash estándar de PostgreSQL. El optimizador 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 asigna un subproceso a la función de unión vectorizada. Puedes aumentar la cantidad de subprocesos disponibles para esta función configurando la marca google_columnar_engine.vectorized_join_threads
en un valor mayor.
Actualiza manualmente tu motor de columnas
De forma predeterminada, el motor columnar está configurado para actualizar automáticamente el almacén de columnas en segundo plano cuando está habilitado. Es posible que debas actualizar manualmente el almacén columnar en ciertas situaciones, por ejemplo, si la actualización automática no actualiza una relación con una gran cantidad de bloques no válidos.
Para actualizar manualmente el motor de columnas, ejecuta la siguiente consulta en SQL:
SELECT google_columnar_engine_refresh('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 Columbar en una instancia, establece la marca google_columnar_engine.enabled
en off
.
Para configurar esta marca en una instancia, haz lo siguiente:
Ejecuta el comando
ALTER SYSTEM
de PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
Soluciona problemas del motor de columnas
Cómo corregir el error "Memoria compartida insuficiente"
Si ejecutas AlloyDB Omni sin suficiente memoria compartida para que el motor de columnas la use, es posible que veas este error:
Insufficient shared memory for generating the columnar formats.
Puedes solucionar este problema especificando la cantidad de memoria compartida que está disponible para el contenedor de AlloyDB Omni. La forma de hacerlo varía según el sistema operativo del host.
Linux
Aumenta el tamaño de la partición /dev/shm
de tu máquina anfitrión con una técnica como la edición del archivo /etc/fstab
.
macOS
Instala un nuevo contenedor de AlloyDB Omni y especifica un valor de memoria compartida más grande para la marca --shm-size
.
Cómo corregir el problema por el que no se propagan las columnas
Si las columnas no se propagan en el motor columnar, es posible que se cumpla una de las siguientes situaciones:
Las columnas que deseas agregar incluyen un tipo de datos no admitido.
No se cumplen los requisitos del motor de columnas.
Para encontrar la causa de este problema, prueba lo siguiente:
Confirma que las tablas o las vistas materializadas de nuestra consulta se encuentren en el motor columnar.
Verifica el uso del motor de columnas con la instrucción
EXPLAIN
.
¿Qué sigue?
Consulta la lista completa de marcas de bases de datos del motor columnar.
Obtén más información sobre la columna automática.