Cómo administrar el contenido del almacén de columnas de forma manual

Selecciona una versión de la documentación:

En esta página, se describe cómo administrar de forma manual el contenido del motor de columnas para acelerar el rendimiento de las consultas. Se explica cómo agregar y quitar tablas, vistas materializadas y los índices de ScaNN.

Administra tablas, vistas materializadas y los índices de ScaNN

Según tu carga de trabajo, puedes agregar columnas de forma manual al almacén de columnas o descartar algunas o todas las columnas de una tabla o una vista materializada del almacén de columnas. La evaluación de consultas usa automáticamente los datos de columnas almacenados para responder a las consultas.

Del mismo modo, puedes agregar de forma manual un índice de ScaNN al motor de columnas para acelerar la búsqueda de vectores. Esto permite realizar búsquedas eficientes del vecino más cercano en grandes conjuntos de datos de embeddings de vectores.

Cuando elijas qué tablas, vistas materializadas y columnas agregar al almacén de columnas, considera el tamaño del almacén de columnas y la forma de la carga de trabajo. Los buenos candidatos para la selección incluyen tablas o vistas grandes que se analizan con frecuencia. Dentro de estas tablas o vistas, identifica los índices grandes no únicos que usa la carga de trabajo de OLAP. Puedes agregar las columnas de estos índices al almacén de columnas y, potencialmente, descartar los índices, lo que elimina el costo de rendimiento asociado con su mantenimiento en la instancia principal.

Usa uno de los siguientes métodos para administrar el contenido del motor de columnas:

Consulta Qué datos puedes agregar al almacén de columnas para obtener información sobre los tipos de datos y las fuentes de datos que puedes usar cuando agregas tablas, columnas y vistas materializadas al almacén de columnas.

Administra el contenido del almacén de columnas actualizando las marcas de la base de datos

Puedes administrar el contenido del almacén de columnas de forma manual actualizando la marca de la base de datos google_columnar_engine.relations. La marca tiene un solo valor que especifica todas las fuentes de datos del almacén de columnas. Durante el reinicio, las columnas especificadas en esta marca se propagan automáticamente al almacén de columnas.

Puedes usar esta marca junto con la columnarización automática. Si el motor de columnas tiene memoria disponible después de propagar las columnas que especificas a través de la marca google_columnar_engine.relations, la columnarización automática agrega más columnas al almacén de columnas, según sea necesario.

Para obtener más información sobre cómo configurar marcas de bases de datos, consulta Configura marcas de bases de datos de AlloyDB Omni.

Agrega columnas con marcas

Para agregar columnas al almacén de columnas, define la marca google_columnar_engine.relations. Establece su valor en una lista de elementos separados por comas, en la que cada elemento especifica una lista de columnas para incluir de una tabla específica, en este formato:

DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)

Reemplaza lo siguiente:

  • DATABASE_NAME: Es la base de datos que contiene las columnas que se agregarán al almacén de columnas.

  • SCHEMA_NAME: Es el esquema que identifica las tablas o las vistas materializadas que se agregarán al almacén de columnas, por ejemplo, public.

  • TABLE_NAME: Es la tabla o la vista materializada que contiene las columnas que se agregarán al almacén de columnas.

  • COLUMN_LIST: Es una lista separada por comas de las columnas que se agregarán al almacén de columnas.

Para agregar todas las columnas de una tabla o una vista materializada, omite la lista de columnas:

DATABASE_NAME.SCHEMA_NAME.TABLE_NAME

Sintaxis de SQL cuando se usa google_columnar_engine.relations

En el siguiente ejemplo, se muestra cómo usar el comando ALTER SYSTEM para agregar dos columnas en el esquema public al almacén de columnas.

ALTER SYSTEM SET google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)';

Descarta columnas con marcas

Para descartar columnas del almacén de columnas, establece un valor nuevo para la marca google_columnar_engine.relations que se describe en la sección anterior, sin incluir las columnas que deseas descartar.

Para descartar todas las columnas del almacén de columnas, anula la configuración de la marca google_columnar_engine.relations.

Para obtener más información sobre cómo configurar marcas de bases de datos, consulta Configura marcas de bases de datos de AlloyDB Omni.

Administra el contenido del almacén de columnas con funciones de SQL

Puedes administrar el contenido del almacén de columnas de forma manual con funciones de SQL.

Estima los requisitos de espacio del almacén de columnas

Ejecuta la función de SQL google_columnar_engine_estimate para estimar la cantidad total de espacio necesario para una relación en el motor de columnas.

Cliente psql

SELECT google_columnar_engine_estimate(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);
    Reemplaza lo siguiente:
  • TABLE_NAME: Es una cadena que contiene el nombre de la tabla o la vista materializada. Si la tabla o la vista se encuentra en un esquema que no es público, especifica el nombre del esquema, un punto y el nombre de la tabla o la vista; por ejemplo, 'myschema.mytable'.
  • COLUMN_LIST: Es una cadena que contiene una lista de los nombres de las columnas que deseas agregar, separada por comas y que distingue mayúsculas de minúsculas. Si deseas agregar todas las columnas de la tabla o la vista materializada al almacén de columnas, omite este parámetro.

Agrega columnas con funciones de SQL

Ejecuta la función de SQL google_columnar_engine_add para agregar columnas al almacén de columnas.

Este método agrega las columnas especificadas al almacén de columnas y administra las columnas solo en el nodo conectado. Las columnas nuevas no persisten en el almacén durante los reinicios de la instancia.

Este método no cambia la google_columnar_engine.relations marca de la base de datos. La columnarización automática no considera las columnas agregadas por esta función de SQL.

Cliente psql

SELECT google_columnar_engine_add(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);
    Reemplaza lo siguiente:
  • 'TABLE_NAME': Es una cadena que contiene el nombre de la tabla o la vista materializada. Si la tabla o la vista se encuentra en un esquema que no es public, especifica el nombre del esquema, un punto y el nombre de la tabla o la vista; por ejemplo, 'myschema.mytable'.
  • 'COLUMN_LIST': Es una cadena que contiene una lista de los nombres de las columnas que deseas agregar, separada por comas, que distingue mayúsculas de minúsculas. Si deseas agregar todas las columnas de la tabla o la vista materializada al almacén de columnas, omite este parámetro.

Descarta columnas con funciones de SQL

Ejecuta la función de SQL google_columnar_engine_drop de la siguiente manera:

Cliente psql

SELECT google_columnar_engine_drop(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);
Reemplaza lo siguiente:
  • 'TABLE_NAME': Es una cadena que contiene el nombre de la tabla o la vista materializada. Si la tabla o la vista se encuentra en un esquema que no es public, especifica el nombre del esquema, un punto y el nombre de la tabla o la vista; por ejemplo, 'myschema.mytable'.
  • 'COLUMN_LIST': Es una cadena que contiene una lista de los nombres de las columnas que deseas agregar, separada por comas, que distingue mayúsculas de minúsculas. Si deseas agregar todas las columnas de la tabla o la vista materializada al almacén de columnas, omite este parámetro.

Puedes usar la función google_columnar_engine_drop para quitar las columnas agregadas editando la marca de la base de datos google_columnar_engine.relations. Sin embargo, cuando lo haces, esas columnas se vuelven a agregar al almacén de columnas cuando se reinicia la instancia.

Administra los índices de ScaNN en el motor de columnas

Para acelerar la búsqueda de vectores, puedes cargar los índices de ScaNN en la caché de índices del motor de columnas.

Agrega, quita y verifica los índices de ScaNN con funciones de SQL

Puedes agregar, quitar y verificar de forma manual los índices de ScaNN de la caché de índices con funciones de SQL. Agregar un índice a la caché puede acelerar las consultas de búsqueda de vectores.

Agrega un índice de ScaNN

Para agregar un índice específico a la caché de índices del motor de columnas, usa la siguiente función de SQL:

SELECT google_columnar_engine_add_index(index => 'SCANN_INDEX_NAME');

Reemplaza SCANN_INDEX_NAME por el nombre del índice de ScaNN que deseas agregar a la caché de índices del motor de columnas.

Quita un índice de ScaNN

Para descartar un índice de ScaNN específico del motor de columnas, usa la siguiente función de SQL:

SELECT google_columnar_engine_drop_index(index => 'SCANN_INDEX_NAME');

Reemplaza SCANN_INDEX_NAME por el nombre del índice de ScaNN que deseas quitar.

Verifica el uso del motor de columnas

Para verificar si tus análisis de índices de vectores usan el motor de columnas, ejecuta el comando EXPLAIN ANALYZE con la opción COLUMNAR_ENGINE:

EXPLAIN (ANALYZE TRUE, SCANN TRUE, COSTS FALSE, TIMING FALSE, SUMMARY FALSE, VERBOSE FALSE, COLUMNAR_ENGINE TRUE)
SELECT * FROM t ORDER BY val <=> '[0.5,0.5,0.5,0.5]' LIMIT 100;

El comando muestra un plan de consulta similar al siguiente:

Index Scan using t_ix3 on t t_1 (actual rows=100 loops=1)
      Order By: (val <=> '[0.5,0.5,0.5,0.5]'::vector)
      Limit: 100
      ScaNN Info: (... columnar engine nodes hit=6...)
      Columnar Engine ScaNN Info: (index found=true)

La presencia de columnar engine nodes hit y Columnar Engine ScaNN Info: (index found=true) en el resultado confirma que se usa el motor de columnas para la consulta.