Puedes agregar tablas, vistas materializadas, columnas e índices de vectores de forma manual al almacén de columnas para controlar qué datos acelera el motor de columnas. Usa la administración manual cuando necesites un control detallado del contenido del almacén de columnas, en lugar de depender de la estructuración automática en columnas para administrar las columnas de forma automática.
Administra tablas, vistas materializadas e índices vectoriales
Según tu carga de trabajo, puedes agregar columnas de forma manual al almacén de columnas o quitar 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 en columnas almacenados para responder consultas.
Del mismo modo, puedes agregar manualmente índices de vectores HNSW o ScaNN al motor de columnas para acelerar la búsqueda de vectores. La aceleración del motor de columnas para los índices HNSW tiene disponibilidad general (DG), mientras que la aceleración para los índices ScaNN está en versión preliminar. Esto permite realizar búsquedas eficientes de vecinos más cercanos en grandes conjuntos de datos de embeddings de vectores.
Cuando elijas qué tablas, vistas materializadas y columnas agregar al almacén de columnas, ten en cuenta tanto el tamaño del almacén de columnas como la forma de la carga de trabajo. Entre los buenos candidatos para la selección, se incluyen tablas o vistas grandes que se analizan con frecuencia. En 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, posiblemente, 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:
- Administra el contenido del almacén de columnas actualizando las marcas de la base de datos
- Administra el contenido del almacén de columnas con funciones de SQL
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.
Antes de comenzar
- Debes tener uno de estos roles de IAM en el proyecto de Google Cloud que estás usando:
roles/alloydb.admin(el rol de IAM predefinido de administrador de AlloyDB)roles/owner(el rol básico de IAM de propietario)roles/editor(el rol básico de IAM de editor)
Si no tienes ninguno de estos roles, comunícate con el administrador de la organización para solicitar acceso.
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 base de datos google_columnar_engine.relations. La marca tiene un solo
valor que especifica todas las fuentes de datos de tu almacén de columnas. Durante el
reinicio, las columnas especificadas en esta marca se propagan automáticamente en el
almacén de columnas.
Puedes usar esta marca junto con la estructuración automática en columnas. Si el
motor de columnas tiene memoria disponible después de propagar las columnas que
especificas con la marca google_columnar_engine.relations, la
estructuración automática en columnas agrega más columnas al almacén de columnas, según
sea necesario.
Para obtener más información sobre cómo configurar las marcas de base de datos de una instancia con Google Cloud CLI o la consola de Google Cloud , consulta Configura las marcas de base de datos de una instancia.
Agrega columnas con marcas
Para agregar columnas al almacén de columnas, define la marca google_columnar_engine.relations de una instancia. Establece su valor en una lista de elementos separada por comas, en la que cada elemento especifique una lista de columnas que se incluirán de una tabla específica, con 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
Para obtener más información sobre cómo configurar las marcas de base de datos en una instancia, consulta Configura las marcas de base de datos de una instancia.
Sintaxis de gcloud CLI cuando se usa google_columnar_engine.relations
Si usas Google Cloud CLI para configurar la marca google_columnar_engine.relations, debes usar la sintaxis de delimitador alternativa para separar las marcas de base de datos que configures. Esto se debe a que la lista de columnas está separada por comas, lo que requiere que uses un carácter que no sea una coma cuando especifiques marcas dentro del mismo argumento de línea de comandos.
En el siguiente ejemplo, se muestra cómo usar gcloud CLI para agregar dos columnas del esquema public al almacén de columnas. En el ejemplo, se establece una marca independiente
para habilitar el motor de columnas, ya que el uso del comando
gcloud alloydb instances update para establecer cualquier marca de base de datos también debe establecer todas las demás marcas de base de datos que quieras que tengan valores no predeterminados, incluso si ya están establecidas.
gcloud alloydb instances update INSTANCE_NAME \
--database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
--region=REGION_ID \
--cluster=CLUSTER_IDReemplaza lo siguiente:
INSTANCE_NAME: El nombre de la instancia.DATABASE_NAME: Es la base de datos que contiene las columnas que se agregarán al almacén de columnas.TABLE_NAME: Es el nombre de la tabla o vista materializada.COLUMN_1, COLUMN_2: Son las columnas que se agregarán al almacén de columnas.REGION_ID: Es la región de tu instancia.CLUSTER_ID: Es el ID del clúster.
Descarta columnas con marcas
Para quitar 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 quitar.
Para quitar todas las columnas del almacén de columnas, desmarca la
marca google_columnar_engine.relations de tu instancia.
Para obtener más información sobre cómo configurar las marcas de base de datos en una instancia, consulta Configura las marcas de base de datos de una instancia.
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 necesaria 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 encuentran 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 separada por comas que distingue mayúsculas de minúsculas con los nombres de las columnas que deseas agregar. Si deseas agregar todas las columnas de la tabla o de 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 entre los reinicios de la instancia.
Este método no cambia la marca de base de datos google_columnar_engine.relations. La estructuración automática en columnas
no tiene en cuenta las columnas que agrega 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 encuentran en un esquema que no seapublic, 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 separada por comas que distingue mayúsculas de minúsculas de los nombres de las columnas que deseas agregar. Si deseas agregar todas las columnas de la tabla o de 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 encuentran en un esquema que no seapublic, 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 separada por comas que distingue mayúsculas de minúsculas de los nombres de las columnas que deseas descartar. Si deseas quitar todas las columnas de la tabla o de la vista materializada del almacén de columnas, omite este parámetro.
Puedes usar la función google_columnar_engine_drop para quitar las columnas que se agregaron
editando la marca de 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 índices vectoriales en el motor de columnas
Para acelerar la búsqueda de vectores, puedes cargar índices de vectores en la caché de índices del motor de columnas. La aceleración del motor de columnas para los índices HNSW tiene disponibilidad general (DG), mientras que la aceleración para los índices ScaNN está en versión preliminar.
Agrega, quita y verifica índices de vectores con funciones de SQL
Puedes agregar, quitar y verificar manualmente los índices de vectores 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 vectores
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 => 'INDEX_NAME');
Reemplaza INDEX_NAME por el nombre del índice de vectores de HNSW o ScaNN que deseas agregar a la caché de índice del motor de columnas.
Quita un índice vectorial
Para quitar un índice de vectores específico del motor de columnas, usa la siguiente función de SQL:
SELECT google_columnar_engine_drop_index(index => 'INDEX_NAME');
Reemplaza INDEX_NAME por el nombre del índice de vectores 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 devuelve 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.
¿Qué sigue?
- Optimiza las consultas con columnas virtuales para expresiones.
- Acelera la búsqueda de vectores con el motor de columnas