Descripción general del motor de columnas

Selecciona una versión de la documentación:

En esta página, se describe el motor de columnas de AlloyDB Omni y se proporcionan instrucciones para usar el motor en instalaciones de contenedores y clústeres de Kubernetes. En esta página, se supone que estás familiarizado con PostgreSQL.

El motor de columnas de AlloyDB Omni acelera el procesamiento de consulta en SQL de análisis, uniones y agregaciones, ya que 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

  • Un motor de ejecución y planificación de consultas en columnas que admite el uso del almacén de columnas en las consultas

Puedes usar el motor de columnas 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 ganancia de rendimiento.

Para usar el motor de columnas con una consulta específica, todas las columnas a las que se hace referencia en la 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 1 GB de la memoria de tu instancia. Según 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 de columnas en tu instancia principal y asignar más memoria a la instancia de grupo de lectura.

Para ver y supervisar el uso de memoria del motor de columnas, 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 recomendado del motor de columnas para tu instancia, consulta Cómo recomendar el tamaño de memoria del almacén de columnas.

Tipos de consultas que se benefician del motor de columnas

Ciertas 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:

Operación Patrones de consulta
Análisis de tabla Filtros selectivos, como las cláusulas WHERE
Una pequeña cantidad de columnas de una tabla o vista materializada más grande
Expresiones como LIKE, SUBSTR o TRIM
Funciones de agregación Solo expresiones como SUM, MIN, MAX, AVG y COUNT
Al comienzo de la consulta de un análisis de columnas
Sin agrupar o agrupadas por columnas
ORDER-BY Solo si el operador está al comienzo de la consulta de un análisis de columnas
SORT Solo si el operador está al comienzo de la consulta de un análisis de columnas y ordena solo las columnas base de la tabla o la vista materializada.
LIMIT Solo si el operador está al comienzo de la consulta de un análisis de columnas y está antes de cualquier SORT o GROUP BY operadores.
INNER HASH JOIN Solo si las claves usadas 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 se usó, consulta Cómo verificar el uso del motor de columnas con EXPLAIN.

Cómo usar el motor de columnas en una instancia de AlloyDB Omni

Para usar el motor de columnas en una instancia de AlloyDB Omni, sigue estos pasos generales:

  1. Habilita el motor en la instancia.

    Habilitar el motor es una operación única y requiere un reinicio de la base de datos.

  2. Agrega columnas al almacén de columnas.

    Para agregar columnas al almacén de columnas, usa uno de los siguientes métodos:

  3. Puedes hacer un seguimiento de lo que hay en el almacén de columnas con la g_columnar_relations vista, y, después de agregar columnas, puedes usar la EXPLAIN instrucción para verificar el uso de el motor de columnas en las consultas SQL.

Para obtener instrucciones detalladas sobre cómo usar el motor de columnas, consulta Cómo configurar 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
  • uuid
  • varchar

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 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, es posible que el optimizador de AlloyDB Omni elija usar el almacén de filas.
  • Las columnas agregadas manualmente al almacén de columnas no se quitan automáticamente. Para forzar la eliminación de columnas agregadas manualmente, usa google_columnar_engine_drop en tu instancia.
  • La columnarización 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 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, 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_count y total_block_count en 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, invalid_block_count será alto.

¿Qué sigue?