En esta página se ofrece 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 consultas SQL de análisis, combinaciones y agregaciones proporcionando estos componentes:
Un almacén de columnas que contiene datos de tablas y vistas materializadas de las columnas seleccionadas, reorganizados en un formato orientado a columnas.
Un planificador de consultas y un motor de ejecución 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. También puede usar la columna automática para analizar su carga de trabajo y rellenar automáticamente el almacén de columnas con las columnas que ofrecen el mejor aumento del rendimiento.
Para usar el motor columnar con una consulta específica, todas las columnas de los fragmentos de esa consulta, como las combinaciones y los análisis, deben estar en el almacén de columnas.
De forma predeterminada, el motor columnar está configurado para usar el 30% de la memoria de tu instancia. En función de tu carga de trabajo, el uso de memoria y si tienes configurado un grupo de lectura, puedes reducir la asignación de memoria del motor columnar en tu instancia principal y asignar más memoria a la instancia del grupo de lectura. Para ver y monitorizar el uso de memoria del motor columnar, consulta 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 Configurar el tamaño del almacén de columnas. Para saber el tamaño de memoria recomendado del motor columnar de tu instancia, consulta Recomendar el tamaño de memoria del almacén de columnas.
Tipos de consultas que se benefician del motor en columnas
Algunas consultas pueden beneficiarse del motor en columnas. A continuación se muestra una lista de operaciones y sus patrones de consulta que se benefician más del motor en columnas:
Analizaciones de tabla
- Tiene filtros selectivos, como las cláusulas
WHERE
. - Usa un número reducido de columnas de una tabla o una vista materializada más grande.
- Usa expresiones como
LIKE
,SUBSTR
o `TRIM.
- Tiene filtros selectivos, como las cláusulas
Funciones de agregación
- Solo usan las siguientes expresiones:
SUM
,MIN
,MAX
,AVG
yCOUNT
. - Se encuentran al principio de la consulta de un análisis columnar.
- No están agrupadas o están agrupadas por columnas.
- Solo usan las siguientes expresiones:
ORDER-BY
ySORT
: solo cuandoORDER-BY
oSORT
se encuentran en los resultados del análisis de las columnas a las que se accede desde el motor columnar.LIMIT
: solo si el operador está al principio de la consulta de un análisis columnar y antes de cualquier operadorSORT
oGROUP BY
.INNER HASH JOIN
solo si las claves utilizadas son columnas y no se usan calificadores de unión.Uniones selectivas solo si las uniones están al principio de la consulta de una búsqueda por columnas.
Para obtener más información sobre qué consultas funcionan mejor con el motor de columnas, si una consulta ha usado el motor de columnas y cómo lo ha usado, consulte Verificar el uso del motor de columnas con EXPLAIN
.
Cómo usar el motor de columnas
Para usar el motor en columnas en una instancia de AlloyDB, sigue estos pasos generales:
Habilita el buscador en la instancia.
Habilitar el motor es una operación que se realiza una sola vez y requiere un reinicio.
Añadir columnas al almacén de columnas.
Para añadir columnas al almacén de columnas, utilice uno de los siguientes métodos:
Usa la columnarización automática, que analiza tu carga de trabajo y añade columnas automáticamente.
Añade las columnas manualmente en función de tu conocimiento de la carga de trabajo de las bases de datos de la instancia.
Puedes hacer un seguimiento del contenido del almacén de columnas con la
g_columnar_relations
vista y, una vez que se hayan añadido columnas, puedes usar laEXPLAIN
instrucción para verificar el uso del motor de columnas en las consultas SQL.
Para obtener instrucciones detalladas sobre cómo usar el motor de columnas, consulta el artículo Configurar el motor de columnas.
Qué datos puede añadir al almacén de columnas
Hay algunas limitaciones en cuanto a los tipos de datos y las fuentes de datos que puede usar al añadir columnas al almacén de columnas.
Tipos de datos admitidos
El motor columnar 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
vector
(Vista previa)
El motor columnar ignora cualquier intento de añadir manualmente columnas con tipos de datos no admitidos al almacén de columnas.
Fuentes de datos no admitidas
El motor columnar no admite tablas ni vistas materializadas con los siguientes atributos como fuentes de datos:
Tablas con particiones no hoja
Tablas externas
Tablas o vistas con menos de 5000 filas
Limitaciones del motor en columnas
- Si ejecutas una consulta analítica en una columna que tiene un índice, el optimizador de AlloyDB puede elegir usar el almacenamiento de filas.
- Las columnas añadidas manualmente a la tienda de columnas no se quitan automáticamente. Para forzar la eliminación de columnas añadidas manualmente, usa
google_columnar_engine_drop()
en tu instancia. - La columnarización automática puede añadir y quitar columnas de forma dinámica en función del uso de las consultas.
- El motor columnar no admite todos los tipos de datos. Para ver los tipos de datos admitidos, consulta Tipos de datos admitidos.
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, puede reducir la frecuencia de actualización o programar actualizaciones más frecuentes del motor de columnas.
Puede comparar las columnas
invalid_block_count
ytotal_block_count
en g_columnar_relations para comprobar si su tabla o vista se ven afectadas. Si tu tabla o vista se modifica con frecuencia o en gran volumen, elinvalid_block_count
será alto.