El motor de columnas de AlloyDB para PostgreSQL acelera las consultas en SQL que analizan, unen y agregan grandes cantidades de datos almacenando las columnas seleccionadas en la memoria en un formato orientado a columnas. Puedes usarla en instancias principales y de grupos de lectura, y la estructuración automática en columnas puede elegir las columnas por ti.
El motor de columnas proporciona los siguientes componentes:
Un almacén de columnas que contiene datos de tablas y vistas materializadas para las columnas seleccionadas, reorganizados en un formato orientado a columnas. También puedes agregar expresiones de uso frecuente al almacén de columnas.
Un motor de ejecución y plan de consultas en columnas para admitir el uso del almacén de columnas en las consultas.
El motor de columnas se puede usar en la instancia principal, en una instancia de grupo de lectura o en ambas. Cuando el motor de columnas está habilitado en una instancia de grupo de lectura, puedes habilitar de forma opcional el reenvío transparente de consultas para enrutar automáticamente el tráfico de solo lectura a ella.
También puedes usar la estructuración automática en columnas para analizar tu carga de trabajo y propagar automáticamente el almacén de columnas con las columnas que proporcionan la mejor mejora de rendimiento.
Para usar el motor de columnas con una consulta específica, todas las columnas de esos fragmentos de consulta, como las uniones y los análisis, deben estar en el almacén de columnas.
De forma predeterminada, el motor de columnas está configurado para usar el 30% de la memoria de tu instancia (o el 10% en una instancia de 1 CPU virtual). Según tu carga de trabajo, el uso de memoria y si tienes un grupo de lectura configurado, puedes optar por reducir la asignación de memoria del motor de columnas en tu instancia principal y asignar más memoria a la instancia del grupo de lectura. Para ver y supervisar el uso de memoria del motor en columnas, consulta Visualiza el uso de memoria del almacén de columnas. Para modificar el tamaño de la memoria que usa el almacén de columnas, consulta Configura el tamaño del almacén de columnas. 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.
Tipos de consultas que se benefician del motor de columnas
Algunas consultas pueden beneficiarse del motor de columnas. A continuación, se muestra una lista de operaciones y sus patrones de consulta que más se benefician del motor de columnas:
Análisis de tablas
- Tiene filtros selectivos, como las cláusulas
WHERE. - Usa una pequeña cantidad de columnas de una tabla o vista materializada más grande.
- Usa expresiones como
LIKE,ILIKE,SUBSTRyTRIM.
- Tiene filtros selectivos, como las cláusulas
Funciones de agregación
- Solo usan las siguientes expresiones:
SUM,MIN,MAX,AVGyCOUNT. - Se encuentran al comienzo de la consulta de un análisis de columnas.
- No están agrupadas o están agrupadas por columnas.
- Solo usan las siguientes expresiones:
ORDER-BYySORT: solo cuandoORDER-BYoSORTse encuentran en los resultados del análisis de las columnas a las que se accede desde el motor de columnas.LIMIT: Solo si el operador está al principio de la consulta de un análisis de columnas y antes de cualquier operadorSORToGROUP BY.INNER HASH JOINsolo si las claves que se usan son columnas y no se usan calificadores de unión.Uniones selectivas solo si las uniones están al principio de la consulta de un análisis de columnas.
Filtra consultas con expresiones JSON.
Para obtener más información sobre qué consultas funcionan mejor con el motor de columnas, si
el motor de columnas se usó en una consulta y cómo se usó, consulta
Verifica el uso del motor de columnas con EXPLAIN.
Cómo usar el motor de columnas
Para usar el motor de columnas en una instancia de AlloyDB, sigue estos pasos de alto nivel:
Habilita el motor en la instancia.
La habilitación del motor es una operación única y requiere un reinicio.
Agrega columnas al almacén de columnas.
Para agregar columnas al almacén de columnas, usa uno de los siguientes métodos:
Usa la estructuración automática en columnas, que analiza tu carga de trabajo y agrega columnas automáticamente.
Agrega las columnas de forma manual o agrega las expresiones de uso frecuente al almacén de columnas (versión preliminar) según tu conocimiento de la carga de trabajo en las bases de datos de la instancia.
Puedes hacer un seguimiento de lo que hay en el almacén de columnas con la vista
g_columnar_relationsy, después de agregar las columnas, puedes usar la sentenciaEXPLAINpara verificar el uso del motor de columnas en las consultas en SQL.
Para obtener instrucciones detalladas sobre cómo usar el motor de columnas, consulta Configura el motor de columnas.
Qué datos puedes agregar al almacén de columnas
Existen algunas limitaciones en los tipos y las fuentes de datos que puedes usar cuando agregas columnas al almacén de columnas.
Tipos de datos admitidos
El motor de columnas puede propagar y actualizar las columnas admitidas en una tabla, incluso si algunas columnas tienen tipos de datos no admitidos. Las columnas con tipos de datos no admitidos se omiten durante el proceso de propagación.
Cuando se ejecuta una consulta, el motor de columnas procesa una tabla si todas las columnas específicas a las que se hace referencia en esa parte de la consulta tienen tipos de datos admitidos y están presentes en el motor de columnas.
En las consultas que involucran varias tablas, como las operaciones JOIN, puedes usar el
motor de columnas para cualquier tabla de forma individual. Siempre que todas las
columnas a las que se accede desde la tabla específica de la consulta tengan tipos de datos admitidos
y estén en el motor de columnas, ese motor puede procesar esa tabla, incluso
si otras tablas de la unión tienen columnas no admitidas.
El motor de columnas solo admite columnas con los siguientes tipos de datos integrados:
arraybigintbooleanbyteachardatedecimaldouble precisionenumfloat4float8integerjsonjsonbnumericrealserialshortsmallinttexttimestamptimestamptzuuidvarcharvector
El motor de columnas ignora cualquier intento de agregar manualmente columnas con tipos de datos no admitidos al almacén de columnas.
Fuentes de datos no compatibles
El motor de columnas no admite tablas ni vistas materializadas con los siguientes atributos como fuentes de datos:
Tablas particionadas que no son de hoja
Tablas externas
Limitaciones del motor de columnas
- Si ejecutas una consulta analítica en una columna que tiene un índice, el optimizador de AlloyDB puede elegir usar el almacén de filas.
- Las columnas que se agregan de forma manual al almacén de columnas no se quitan automáticamente. Para forzar la eliminación
de las columnas agregadas de forma manual, usa
google_columnar_engine_drop()en tu instancia. - La estructuración automática en columnas puede agregar y quitar columnas de forma dinámica según el uso de las consultas.
- El motor de columnas no admite todos los tipos de datos. Para ver los tipos de datos compatibles, consulta Tipos de datos compatibles.
Las actualizaciones frecuentes de las filas invalidan los datos de columnas. Para validar una tabla o una vista materializada en el almacén de columnas, puedes reducir la frecuencia de actualización o programar las actualizaciones del motor de columnas con más frecuencia.
Puedes comparar las columnas
invalid_block_countytotal_block_counten g_columnar_relations para verificar si tu tabla o vista se ve afectada. Si tienes cambios frecuentes o de gran volumen en tu tabla o vista, elinvalid_block_countserá alto.Una tabla particionada no se puede propagar directamente en el motor de columnas. Para usar el motor de columnas, debes propagar de forma individual cada una de las particiones de hoja de la tabla.
En el caso de las tablas o vistas con una pequeña cantidad de filas, por lo general, menos de 5,000, el planificador de consultas puede optar por usar el almacén de filas en lugar del almacén de columnas para obtener un mejor rendimiento, incluso si los datos se cargan correctamente en el motor de columnas.