En esta página, se describe cómo mantener la actualización de los datos en el almacén de columnas del motor de columnas en AlloyDB para PostgreSQL.
A medida que se agregan, borran o actualizan filas de la tabla, el motor de columnas no actualiza los datos del almacén de columnas de forma inmediata. En cambio, marca el contenido afectado en el almacén de columnas como no válido, y 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 50%, lo que indica que un contenido determinado en el almacén de columnas se marca para su actualización cuando el 50% 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.
Además, puedes actualizar manualmente las tablas y los índices ScaNN que se cargan en el motor de columnas en cualquier momento. Por lo general, realizas una actualización manual cuando quieres 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 verificar el porcentaje de datos no válidos para tus tablas y vistas materializadas consultando 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 sea 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
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 la base de datos google_columnar_engine.refresh_threshold_percentage para tu instancia de AlloyDB.
Console
- En la Google Cloud consola de, 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
1y100. 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 y, luego, 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: un valor entero entre
1y100Este 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: 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 manualmente las tablas y los índices vectoriales en el almacén de columnas
Puedes actualizar manualmente las tablas y los índices vectoriales en el motor de columnas en cualquier momento con funciones de SQL dedicadas. Los tipos de índices compatibles 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 sea public, especifica el nombre del esquema con el formato
SCHEMA_NAME.TABLE_NAME—por ejemplo, myschema.mytable.
Del mismo modo, para actualizar manualmente un índice vectorial 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á.