A medida que cambian las filas, el motor de columnas marca los datos del almacén de columnas afectados en AlloyDB para PostgreSQL como no válidos, y la aceleración de consultas disminuye de forma gradual. Para mantener las consultas rápidas, puedes ajustar el umbral de actualización automática o actualizar manualmente las tablas y los índices de vectores.
El motor de columnas no actualiza el almacén de columnas de inmediato cuando se agregan, borran o actualizan filas de la tabla. En cambio, las consultas se planifican y ejecutan con datos orientados a columnas del almacén de columnas y datos orientados a filas del almacenamiento en caché de filas y del almacenamiento de base de datos.
Con el tiempo, a medida que más y más bloques de datos dejan de ser válidos, las mejoras en el rendimiento de las consultas que proporciona el motor de columnas se reducen hasta el punto en que los datos de columnas deben actualizarse para recuperar las mejoras en el rendimiento de las consultas. Cuando se alcanza este umbral de actualización, el motor de columnas usa un trabajo en segundo plano para actualizar los datos no válidos en el almacén de columnas. De forma predeterminada, el motor de columnas usa un umbral de actualización del 25%, lo que indica que un contenido determinado en el almacén de columnas se marca para su actualización cuando el 25% de su contenido deja de ser válido. Puedes cambiar este umbral de actualización para ajustar la sobrecarga de la actualización automática y, posiblemente, obtener un mejor rendimiento continuo de las consultas para la carga de trabajo de tu aplicación.
Realiza una actualización manual de las tablas y los índices vectoriales de HNSW y ScaNN cuando quieras que los cambios en una tabla se reflejen en el almacén de columnas lo antes posible después de realizar los cambios.
Verifica el porcentaje de datos no válidos
A medida que tu aplicación agrega, borra o actualiza filas en una tabla, el motor de columnas marca los datos afectados en el almacén de columnas como no válidos. Puedes consultar el porcentaje de datos no válidos de tus tablas y vistas materializadas con la vista g_columnar_relations. Esto te ayuda a decidir si necesitas realizar una actualización manual o ajustar el umbral de actualización automática.
Para ver el porcentaje de invalidación de todas las relaciones en el almacén de columnas, ejecuta la siguiente consulta:
SELECT relation_name, invalid_percentage FROM g_columnar_relations;
Para verificar el porcentaje de invalidación de una tabla específica, agrega una cláusula WHERE a la consulta.
SELECT relation_name,
CASE
WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
ELSE 0.0
END AS invalid_block_percentage
FROM
g_columnar_relations
WHERE
relation_name = 'TABLE_NAME';
Reemplaza TABLE_NAME por una cadena que contenga el nombre de la tabla o la vista materializada. Si el recurso está en un esquema que no es
public, especifica el nombre del esquema con el formato
SCHEMA_NAME.TABLE_NAME, por ejemplo, myschema.mytable.
Para verificar el porcentaje de invalidación de un índice específico, agrega una cláusula WHERE a la consulta.
SELECT index_name,
CASE
WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
ELSE 0.0
END AS invalid_block_percentage
FROM
g_columnar_indexes
WHERE
index_name = 'INDEX_NAME';
Reemplaza INDEX_NAME por una cadena que contenga el nombre del índice vectorial.
Cambia el umbral de actualización del motor de columnas
Para cambiar el umbral de actualización del motor de columnas, debes modificar el valor de la marca de base de datos google_columnar_engine.refresh_threshold_percentage de tu instancia de AlloyDB.
Console
- En la consola de Google Cloud , ve a la página Clústeres.
- Haz clic en el nombre del clúster que contiene la instancia que deseas configurar.
- En la sección Instancias en tu clúster, busca la instancia y haz clic en Editar.
- En la sección Marcas, agrega una marca nueva o modifica la marca
google_columnar_engine.refresh_threshold_percentageexistente. - Establece el valor en un número entero entre
0y100(o-1para inhabilitar la actualización automática). Este valor representa el porcentaje de datos no válidos que activan una actualización. - Haz clic en Listo.
gcloud
Para usar gcloud CLI, puedes instalar e inicializar Google Cloud CLI, o bien puedes usar Cloud Shell.
Para cambiar el umbral de actualización del motor de columnas, ejecuta el siguiente comando:gcloud alloydb instances update INSTANCE_ID \
--database-flags=google_columnar_engine.refresh_threshold_percentage=THRESHOLD \
--cluster=CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_IDReemplaza lo siguiente:
- INSTANCE_ID: el ID de la instancia
- THRESHOLD: Es un valor entero entre
0y100(o-1para inhabilitar la actualización automática). Este valor especifica el porcentaje de bloques de datos en el contenido que deben dejar de ser válidos para que el contenido se marque para su actualización. - CLUSTER_ID: Es el ID del clúster en el que se encuentra la instancia.
- REGION_ID: es la región del clúster.
- PROJECT_ID: el ID del proyecto
Actualiza de forma manual las tablas y los índices de vectores en el almacén de columnas
Puedes actualizar manualmente las tablas y los índices de vectores en el motor de columnas en cualquier momento con funciones de SQL dedicadas. Los tipos de índices admitidos son ScaNN y HNSW.
Para actualizar los datos de una tabla en el motor de columnas, ejecuta la función google_columnar_engine_refresh.
SELECT google_columnar_engine_refresh('TABLE_NAME');
Reemplaza TABLE_NAME por una cadena que contenga el nombre de la tabla o la vista materializada. Si el recurso está en un esquema que no es
public, especifica el nombre del esquema con el formato
SCHEMA_NAME.TABLE_NAME, por ejemplo, myschema.mytable.
Del mismo modo, para actualizar de forma manual un índice de vectores en el motor de columnas, ejecuta la función google_columnar_engine_refresh_index.
SELECT google_columnar_engine_refresh_index(index => 'INDEX_NAME');
Reemplaza INDEX_NAME por una cadena que contenga el nombre del índice que se actualizará.