Para usar el motor de columnas al usar AlloyDB para PostgreSQL en Google Cloud, consulta Configurar el motor de columnas.
Para obtener una descripción general conceptual del motor de columnas de AlloyDB, consulta Acerca del motor de columnas de AlloyDB.
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
.
Para definir esta marca en una instancia, haz lo siguiente:
Ejecuta el
ALTER SYSTEM
comando de PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
Si quiere ajustar la configuración del motor columnar, siga las instrucciones de la sección siguiente antes de reiniciar el servidor de la base de datos. Si no, sigue los dos pasos siguientes para reiniciar el servidor de la base de datos ahora.
Configurar el tamaño del almacén de columnas
Mientras el motor en columnas está habilitado en una instancia, AlloyDB asigna una parte de la memoria de la instancia para almacenar sus datos en columnas. Al dedicar RAM de alta velocidad a tu almacén de columnas, te aseguras de que AlloyDB pueda acceder a los datos de las columnas lo más rápido posible.
También puedes asignar un tamaño fijo y específico con la marca google_columnar_engine.memory_size_in_mb
.
Para definir esta marca en una instancia, haz lo siguiente:
Ejecuta el
ALTER SYSTEM
comando de PostgreSQL:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;
Sustituye
COLUMN_STORE_SIZE
por el nuevo tamaño del almacén de columnas, en megabytes.
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 uno de los métodos.
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 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
.
Actualizar manualmente el 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. En algunas situaciones, es posible que tengas que actualizar manualmente el almacén columnar, por ejemplo, si la actualización automática no actualiza una relación con un número elevado de bloques no válidos.
Para actualizar manualmente el motor de columnas, ejecuta la siguiente consulta de SQL:
SELECT google_columnar_engine_refresh('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
.
Para definir esta marca en una instancia, haz lo siguiente:
Ejecuta el
ALTER SYSTEM
comando de PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
Solucionar problemas del motor en columnas
Solucionar un error de "memoria compartida insuficiente"
Si ejecutas AlloyDB Omni sin suficiente memoria compartida para que la use el motor de columnas, es posible que veas este error:
Insufficient shared memory for generating the columnar formats.
Para solucionar este problema, especifica la cantidad de memoria compartida que está disponible para el contenedor de AlloyDB Omni. La forma de hacerlo varía en función del sistema operativo del host.
Linux
Aumenta el tamaño de la partición /dev/shm
de tu máquina host 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 mayor para la marca --shm-size
.
Corregir el problema de que no se rellenan las columnas
Si las columnas no se rellenan en el motor columnar, puede deberse a una de las siguientes situaciones:
Las columnas que quiere añadir incluyen un tipo de datos no admitido.
No se cumplen los requisitos del motor en columnas.
Para averiguar la causa de este problema, prueba lo siguiente:
Confirma que las tablas o las vistas materializadas de nuestra consulta están en el motor de columnas.
Verifica el uso del motor de columnas con la instrucción
EXPLAIN
.
Siguientes pasos
Consulta la lista completa de marcas de la base de datos del motor columnar.
Consulta información sobre la auto-columnarización.