En esta página, se proporciona una descripción general del motor de columnas que ofrece AlloyDB para PostgreSQL y se muestra cómo usarlo.
El motor de columnas de AlloyDB acelera el procesamiento de consulta en SQL de análisis, uniones y agregaciones proporcionando los siguientes componentes:
Un almacén de columnas que contiene datos de tablas y vistas materializadas para columnas seleccionadas, reorganizados en un formato orientado a columnas.
Un planificador de consultas y un motor de ejecución de 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. También puedes usar la columnarización automática 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. Según tu carga de trabajo, el uso de memoria y si tienes un grupo de lectura configurado, puedes 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 por parte del motor columnar, consulta Cómo ver 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 Cómo configurar el tamaño del almacén de columnas. Para encontrar el tamaño de memoria del motor de columnas recomendado 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 se benefician más del motor de columnas:
Análisis de tablas
- Tiene filtros selectivos, como cláusulas
WHERE
. - Usa una pequeña cantidad de columnas de una tabla o vista materializada más grande.
- Usa expresiones como
LIKE
,SUBSTR
o "TRIM".
- Tiene filtros selectivos, como cláusulas
Funciones de agregación
- Solo usan las siguientes expresiones:
SUM
,MIN
,MAX
,AVG
yCOUNT
. - Se encuentran al comienzo de la consulta de un análisis de columnas.
- No están agrupados o están agrupados por columnas.
- Solo usan las siguientes expresiones:
ORDER-BY
ySORT
: Solo cuandoORDER-BY
oSORT
se encuentran en los resultados de análisis de las columnas a las que se accede desde el motor de columnas.LIMIT
: Solo si el operador está al comienzo de la consulta de un análisis de columnas y está antes de cualquier operadorSORT
oGROUP BY
.INNER HASH JOIN
solo 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 comienzo de la consulta de un análisis de columnas
Para obtener más información sobre qué consultas funcionan mejor con el motor de columnas, si una consulta usó el motor de columnas y cómo lo usó, consulta Cómo verificar 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.
Habilitar el 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 columna automática, que analiza tu carga de trabajo y agrega columnas automáticamente.
Agrega las columnas de forma manual según tus conocimientos sobre 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_relations
y, después de agregar las columnas, puedes usar la sentenciaEXPLAIN
para verificar el uso del motor de columnas en las consultas de 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 de datos y las fuentes de datos que puedes usar cuando agregas columnas al almacén de columnas.
Tipos de datos admitidos
El motor de columnas solo admite columnas con los siguientes tipos de datos integrados:
array
bigint
boolean
bytea
char
date
decimal
double precision
enum
float4
float8
integer
json
jsonb
numeric
real
serial
short
smallint
text
timestamp
timestamptz
uuid
varchar
El motor de columnas ignora cualquier intento de agregar columnas con tipos de datos no compatibles al almacén de columnas de forma manual.
Fuentes de datos no admitidas
El motor de columnas no admite tablas ni vistas materializadas con los siguientes atributos como fuentes de datos:
Tablas particionadas que no son hojas
Tablas externas
Tablas o vistas con menos de 5,000 filas
Limitaciones del motor de columnas
- Si ejecutas una consulta analítica en una columna que tiene un índice, el optimizador de AlloyDB puede optar por usar el almacenamiento en filas.
- Las columnas que se agregan de forma manual al almacén de columnas no se quitan automáticamente. Para quitar de forma forzosa las columnas agregadas de forma manual, usa
google_columnar_engine_drop()
en tu instancia. - La columna automática puede agregar y quitar columnas de forma dinámica según el uso de la consulta.
- 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 las columnas. Para validar una tabla o una vista materializada en el almacén de columnas, puedes reducir la frecuencia de actualización o programar actualizaciones más frecuentes del motor de columnas.
Puedes comparar las columnas
invalid_block_count
ytotal_block_count
en g_columnar_relations para verificar si tu tabla o vista se ve afectada. Si realizas cambios frecuentes o de gran volumen en tu tabla o vista, el valor deinvalid_block_count
será alto.
¿Qué sigue?
Obtén información para acelerar las consultas analíticas con el motor de columnas de AlloyDB.