Configura el motor de columnas

Para acelerar las consultas analíticas y optimizar el rendimiento de las cargas de trabajo de procesamiento híbrido transaccional y analítico (HTAP), puedes habilitar el motor de columnas en una instancia de AlloyDB para PostgreSQL. También puedes configurar el tamaño de memoria inicial para el almacén de columnas y ajustar la configuración de la memoria y la caché de almacenamiento para que coincida con los requisitos de tu carga de trabajo.

Para usar el motor de columnas en AlloyDB Omni, consulta Habilita el motor de columnas en AlloyDB Omni.

Cada una de estas acciones implica cambiar el valor de una marca de base de datos en una de tus instancias de AlloyDB. Para obtener más información sobre cómo configurar marcas de base de datos, consulta Configura las marcas de base de datos de una instancia.

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 de columnas en una instancia, establece la marca google_columnar_engine.enabled de la instancia en on.

Después de configurar esta marca, la instancia se reinicia de forma automática.

Para habilitar el acceso directo a Iceberg y consultar tablas de Apache Iceberg, también debes establecer la marca google_columnar_engine.enable_iceberg_reads en on.

Para obtener más información sobre cómo configurar marcas de base de datos en AlloyDB, consulta Configura las marcas de base de datos de una instancia.

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.

La memoria y la caché de almacenamiento juntas representan la capacidad general del motor de columnas.

Configura la memoria para el motor de columnas

Si el almacén de columnas supera la parte asignada de la memoria de tu instancia, AlloyDB usa automáticamente la capa de caché subyacente de la instancia para almacenar los datos de columnas adicionales.

En AlloyDB, puedes cargar relaciones, vistas materializadas y, también, índices de vectores en el motor de columnas para acelerar el rendimiento de las consultas.

De forma predeterminada, AlloyDB asigna el 30% de la memoria de la instancia al almacén de columnas. Para una instancia de 1 CPU virtual, la asignación predeterminada es del 10%. AlloyDB ajusta automáticamente la asignación total si cambias el tamaño de la instancia. Puedes modificar la memoria de la instancia hasta un máximo recomendado del 50%, aunque se permite el 70%. Para una instancia de 1 CPU virtual, el máximo permitido es del 20%. Independientemente del tamaño de la instancia, la asignación mínima es de 128 MB. Para encontrar el tamaño de memoria recomendado del motor de columnas para tu instancia, consulta Recomienda el tamaño de memoria del almacén de columnas.

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 que AlloyDB vuelva a la asignación predeterminada, quita la marca de la instancia.

Para obtener más información sobre cómo configurar o borrar marcas, consulta Configura las marcas de base de datos de una instancia.

Configura la carga de índices de vectores en el motor de columnas

El motor de columnas acelera la Vector Search cuando se propagan los índices de vectores de HNSW o ScaNN en él. La aceleración del motor de columnas para los índices HNSW tiene disponibilidad general (DG), mientras que la aceleración para los índices ScaNN está en versión preliminar.

Para habilitar la caché de índice de columnas, establece la marca google_columnar_engine.enable_index_caching en on.

Para inhabilitar esta función, establece la marca en off.

Configura la caché de almacenamiento para el motor de columnas

Debes ajustar el tamaño de google_columnar_engine.storage_cache_size en relación con el parámetro de configuración google_columnar_engine.memory_size_in_mb, ya que la memoria del motor de columnas se usa para los metadatos en memoria de la caché de almacenamiento. La proporción de tamaño recomendada es de aproximadamente 100 a 1,000 veces el tamaño de la memoria. Por ejemplo, con un google_columnar_engine.memory_size_in_mb de 1,024 (1 GB), debes establecer google_columnar_engine.storage_cache_size entre 100 GB y 1,000 GB.

La caché de almacenamiento del motor de columnas se aprovisiona según el nivel de la instancia.

Nivel de la instancia Tamaño predeterminado de la caché del motor de columnas
N2 C4A
Principal Grupo de lectura Principal o grupo de lectura
1 CPU virtual N/A N/A 0
2 CPU virtuales 18.75 GB 37.5 GB 18.75 GB
4 CPU virtuales 18.75 GB 37.5 GB 18.75 GB
8 CPU virtuales 18.75 GB 37.5 GB 37.5 GB
16 CPUs virtuales 37.5 GB 37.5 GB 75 GB
32 CPU virtual 75 GB 75 GB 112.5 GB
48 CPU virtuales N/A N/A 187.5 GB
64 CPUs virtuales 150 GB 150 GB 262.5 GB
72 vCPU N/A N/A 300 GB
96 vCPU 300 GB 300 GB N/A
128 CPU virtuales 450 GB 450 GB N/A

La marca google_columnar_engine.storage_cache_size te permite ajustar la caché de almacenamiento del motor de columnas, con las limitaciones de los valores mínimos y máximos que se indican en la siguiente tabla:

Nivel de la instancia Tamaño mínimo de la caché del motor de columnas Tamaño máximo de la caché del motor de columnas
N2 C4A
Principal Grupo de lectura Principal o grupo de lectura
1 CPU virtual N/A N/A N/A 0
2 CPU virtuales 0 187.5 GB 375 GB 187.5 GB
4 CPU virtuales 0 187.5 GB 375 GB 187.5 GB
8 CPU virtuales 0 187.5 GB 375 GB 375 GB
16 CPUs virtuales 0 375 GB 375 GB 750 GB
32 CPU virtual 0 750 GB 750 GB 1,125 GB
48 CPU virtuales 0 N/A N/A 1,875 GB
64 CPUs virtuales 0 1,500 GB 1,500 GB 2,625 GB
72 vCPU 0 N/A N/A 3,000 GB
96 vCPU 0 3,000 GB 3,000 GB N/A
128 CPU virtuales 0 4,500 GB 4,500 GB N/A

Supervisa los datos de la caché de almacenamiento del motor de columnas

Para ver y supervisar los datos sobre la caché de almacenamiento del motor de columnas, puedes usar los siguientes comandos:

Comando Descripción
SELECT google_columnar_engine_storage_cache_used(); Devuelve el tamaño de la caché de almacenamiento del motor de columnas que se usó.
SELECT google_columnar_engine_storage_cache_available(); Devuelve el tamaño de la caché de almacenamiento del motor de columnas sin usar.
SHOW google_columnar_engine.storage_cache_size; Devuelve la cantidad total del tamaño configurado de la caché de almacenamiento para el motor de columnas.

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 que cumplen con los requisitos.

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 estándar de PostgreSQL. El planificador toma esta decisión comparando el costo de ejecutar la consulta con cualquiera de los métodos.

Para habilitar la unión vectorizada en una instancia, establece la marca google_columnar_engine.enable_vectorized_join de la instancia en on.

Para obtener más información sobre cómo configurar marcas de base de datos, consulta Configura las marcas de base de datos de una instancia.

AlloyDB asigna un subproceso a la función de unión vectorizada de forma predeterminada. Puedes aumentar la cantidad de subprocesos disponibles para esta función si configuras la marca google_columnar_engine.vectorized_join_threads en un valor mayor.

Actualiza manualmente el motor de columnas

De forma predeterminada, cuando habilitas el motor de columnas, se configura para actualizar automáticamente el almacén de columnas en segundo plano.

Para las cargas de trabajo con una alta tasa de modificaciones de datos, como las operaciones frecuentes de INSERT, UPDATE o DELETE, puedes actualizar manualmente el almacén de columnas después de estos cambios para mantener el índice actualizado.

Para actualizar de forma manual 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 columnas en una instancia, establece la marca google_columnar_engine.enabled en off.

Para obtener más información sobre cómo configurar marcas de base de datos en AlloyDB, consulta Configura las marcas de base de datos de una instancia.

Después de configurar esta marca, la instancia se reinicia de forma automática.

Soluciona problemas del motor de columnas

Si las columnas no se propagan en el motor de columnas, es posible que se cumpla una de las siguientes situaciones:

  • Las columnas que quieres 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:

  • Revisa los registros de auditoría de tu instancia.

  • Confirma que las tablas o vistas materializadas de tu consulta estén en el motor de columnas.

  • Verifica el uso del motor de columnas con la sentencia EXPLAIN.

¿Qué sigue?