Mantener 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 de AlloyDB para PostgreSQL.

Cuando se añaden, eliminan o actualizan filas de una tabla, el motor columnar no actualiza inmediatamente los datos en el almacén de columnas. En su lugar, marca el contenido afectado en el almacén de columnas como no válido y las consultas se planifican y ejecutan usando tanto los datos orientados a columnas del almacén de columnas como los datos orientados a filas del almacenamiento en caché de filas y de la base de datos.

Con el tiempo, a medida que se invalidan más y más bloques de datos, las mejoras en el rendimiento de las consultas que proporciona el motor columnar se reducen hasta el punto en que los datos columnares deben actualizarse para recuperar esas mejoras. Cuando se alcanza este umbral de actualización, el motor columnar usa un trabajo en segundo plano para actualizar los datos no válidos del almacén de columnas. De forma predeterminada, el motor columnar usa un umbral de actualización de 50, lo que indica que el contenido de la columna se marca para actualizarse 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, de esta forma, mejorar el rendimiento continuo de las consultas de 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. Normalmente, se realiza una actualización manual cuando se quiere que los cambios de una tabla se reflejen en el almacén de columnas lo antes posible después de hacerlos.

Comprobar el porcentaje de datos no válidos

Cuando tu aplicación añade, elimina o actualiza filas en una tabla, el motor columnar marca como no válidos los datos afectados en el almacén de columnas. Para consultar el porcentaje de datos no válidos de tus tablas y vistas materializadas, puedes consultar la vista g_columnar_relations. De esta forma, puede decidir si debe 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 del almacén columnar, ejecute la siguiente consulta:

SELECT relation_name, invalid_percentage FROM g_columnar_relations;

Para comprobar el porcentaje de invalidación de una tabla específica, añade 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

Sustituye TABLE_NAME por una cadena que contenga el nombre de la tabla o de 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 comprobar el porcentaje de invalidación de un índice específico, añade 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

Cambiar el umbral de actualización del motor columnar

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

Consola

  1. En la Google Cloud consola, ve a la página Clusters.

    Ir a Clústeres

  2. Haz clic en el nombre del clúster que contiene la instancia que quieres configurar.
  3. En la sección Instancias de tu clúster, busca la instancia y haz clic en Editar.
  4. En la sección Banderas, añade una bandera o modifica la bandera google_columnar_engine.refresh_threshold_percentage.
  5. Asigna al valor un número entero entre 1 y 100. Este valor representa el porcentaje de datos no válidos que activa una actualización.
  6. Haz clic en Listo.

gcloud

Para usar la CLI de gcloud, puedes instalar e inicializar Google Cloud CLI o 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

Haz los cambios siguientes:

  • INSTANCE_ID: el ID de la instancia.
  • THRESHOLD: un número entero entre 1 y 100. Este valor especifica el porcentaje de bloques de datos del contenido que deben dejar de ser válidos para que el contenido se marque como que debe actualizarse.
  • CLUSTER_ID: el ID del clúster en el que se encuentra la instancia.
  • REGION_ID: la región del clúster.
  • PROJECT_ID: el ID del proyecto.

Actualizar manualmente las tablas y los índices de ScaNN en el almacén de columnas

Puede actualizar manualmente las tablas y los índices de ScaNN en el motor columnar en cualquier momento mediante funciones SQL específicas.

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);

Sustituye TABLE_NAME por una cadena que contenga el nombre de la tabla o de 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 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);

Sustituye INDEX_NAME por una cadena que contenga el nombre del índice de ScaNN que quieras actualizar.