Mantén la actualización de los datos del almacén de columnas en memoria

En esta página, se describe cómo mantener la actualización de los datos en el almacén de columnas del motor columnar en AlloyDB para PostgreSQL.

A medida que se agregan, borran o actualizan filas de la tabla, el motor columnar no actualiza los datos de la columna de almacenamiento 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 de la 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 columnar usa un trabajo en segundo plano para actualizar los datos no válidos en el almacén de columnas. De forma predeterminada, el motor columnar usa un umbral de actualización del 50%, lo que indica que el 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 de ScaNN que se cargan en el motor columnar en cualquier momento. Por lo general, realizas una actualización manual cuando deseas 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 columnar 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 una consulta a 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 columnar, 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 se encuentra 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

Cómo cambiar el umbral de actualización del motor de columnas

Para cambiar el umbral de actualización del motor columnar, debes modificar el valor de la marca de base de datos google_columnar_engine.refresh_threshold_percentage para tu instancia de AlloyDB.

Console

  1. En la consola de Google Cloud , ve a la página Clústeres.

    Ir a los clústeres

  2. Haz clic en el nombre del clúster que contiene la instancia que deseas configurar.
  3. En la sección Instances in your cluster, busca la instancia y haz clic en Edit.
  4. En la sección Marcas, agrega una marca nueva o modifica la marca google_columnar_engine.refresh_threshold_percentage existente.
  5. Establece el valor en un número entero entre 1 y 100. Este valor representa el porcentaje de datos no válidos que activan una actualización.
  6. Haz clic en Listo.

gcloud

Para usar gcloud CLI, puedes instalar y, luego, inicializar Google Cloud CLI, o bien usar Cloud Shell.

Para cambiar el umbral de actualización del motor columnar, 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_ID

Reemplaza lo siguiente:

  • INSTANCE_ID: el ID de la instancia
  • THRESHOLD: Es un valor entero entre 1 y 100. 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 manualmente las tablas y los índices de ScaNN en el almacén de columnas

Puedes actualizar manualmente las tablas y los índices de ScaNN en el motor columnar en cualquier momento con funciones de SQL dedicadas.

Para actualizar los datos de una tabla en el motor columnar, 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 se encuentra 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 de ScaNN 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 de ScaNN que se actualizará.