Maintenir la fraîcheur des données du store orienté colonnes en mémoire

Cette page explique comment maintenir la fraîcheur des données dans le store orienté colonnes du moteur columnar dans AlloyDB pour PostgreSQL.

Lorsque des lignes de tableau sont ajoutées, supprimées ou mises à jour, le moteur en colonnes ne met pas immédiatement à jour les données dans le store orienté colonnes. Au lieu de cela, il marque le contenu concerné dans le column store comme non valide. Les requêtes sont planifiées et exécutées à l'aide de données orientées colonnes provenant du column store et de données orientées lignes provenant du cache de lignes et du stockage de base de données.

Au fil du temps, à mesure que de plus en plus de blocs de données deviennent non valides, les améliorations des performances des requêtes fournies par le moteur en colonnes sont réduites au point où les données en colonnes doivent être actualisées pour retrouver ces améliorations. Lorsque ce seuil d'actualisation est atteint, le moteur de données en colonnes utilise un job en arrière-plan pour actualiser les données non valides dans le store orienté colonnes. Par défaut, le moteur de données en colonnes utilise un seuil d'actualisation de 50, ce qui signifie que le contenu donné dans le magasin de colonnes est marqué pour l'actualisation lorsque 50 % de son contenu est devenu non valide. Vous pouvez modifier ce seuil d'actualisation pour ajuster le coût de l'actualisation automatique et potentiellement améliorer les performances des requêtes continues pour la charge de travail de votre application.

Vous pouvez également actualiser manuellement les tables et les index ScaNN chargés dans le moteur columnar à tout moment. En général, vous effectuez une actualisation manuelle lorsque vous souhaitez que les modifications apportées à une table soient reflétées dans le column store dès que possible après avoir été effectuées.

Vérifier le pourcentage de données non valides

Lorsque votre application ajoute, supprime ou met à jour des lignes dans une table, le moteur en colonnes marque les données concernées dans le column store comme non valides. Vous pouvez vérifier le pourcentage de données incorrectes pour vos tables et vues matérialisées en interrogeant la vue g_columnar_relations. Cela vous aide à déterminer si vous devez effectuer une actualisation manuelle ou ajuster le seuil d'actualisation automatique.

Pour afficher le pourcentage d'invalidation de toutes les relations dans le store orienté colonnes, exécutez la requête suivante :

SELECT relation_name, invalid_percentage FROM g_columnar_relations;

Pour vérifier le pourcentage d'invalidation d'une table spécifique, ajoutez une clause WHERE à la requête.

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

Remplacez TABLE_NAME par une chaîne contenant le nom de la table ou de la vue matérialisée. Si la ressource se trouve dans un schéma autre que public, spécifiez le nom du schéma au format SCHEMA_NAME.TABLE_NAME (par exemple, myschema.mytable).

Pour vérifier le pourcentage d'invalidation d'un index spécifique, ajoutez une clause WHERE à la requête.

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

Modifier le seuil d'actualisation du moteur de données en colonnes

Pour modifier le seuil d'actualisation du moteur en colonnes, vous devez modifier la valeur de l'indicateur de base de données google_columnar_engine.refresh_threshold_percentage pour votre instance AlloyDB.

Console

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur le nom du cluster contenant l'instance que vous souhaitez configurer.
  3. Dans la section Instances de votre cluster, recherchez l'instance et cliquez sur Modifier.
  4. Dans la section Indicateurs, ajoutez un indicateur ou modifiez l'indicateur google_columnar_engine.refresh_threshold_percentage existant.
  5. Définissez la valeur sur un nombre entier compris entre 1 et 100. Cette valeur représente le pourcentage de données non valides qui déclenchent une actualisation.
  6. Cliquez sur OK.

gcloud

Pour utiliser la gcloud CLI, vous pouvez installer et initialiser Google Cloud CLI, ou utiliser Cloud Shell.

Pour modifier le seuil d'actualisation du moteur columnar, exécutez la commande suivante :
gcloud alloydb instances update INSTANCE_ID \
    --database-flags=google_columnar_engine.refresh_threshold_percentage=THRESHOLD \
    --cluster=CLUSTER_ID \
    --region=REGION_ID \
    --project=PROJECT_ID

Remplacez les éléments suivants :

  • INSTANCE_ID : ID de l'instance
  • THRESHOLD : valeur entière comprise entre 1 et 100. Cette valeur spécifie le pourcentage de blocs de données dans le contenu qui doivent devenir non valides pour que le contenu soit marqué comme devant être actualisé.
  • CLUSTER_ID : ID du cluster où se trouve l'instance.
  • REGION_ID : région du cluster.
  • PROJECT_ID : ID du projet.

Actualiser manuellement les tables et les index ScaNN dans le store orienté colonnes

Vous pouvez actualiser manuellement les tables et les index ScaNN dans le moteur en colonnes à tout moment à l'aide de fonctions SQL dédiées.

Pour actualiser les données d'une table dans le moteur de données en colonnes, exécutez la fonction google_columnar_engine_refresh.

SELECT google_columnar_engine_refresh(TABLE_NAME);

Remplacez TABLE_NAME par une chaîne contenant le nom de la table ou de la vue matérialisée. Si la ressource se trouve dans un schéma autre que public, spécifiez le nom du schéma au format SCHEMA_NAME.TABLE_NAME (par exemple, myschema.mytable).

De même, pour actualiser manuellement un index ScaNN dans le moteur en colonnes, exécutez la fonction google_columnar_engine_refresh_index.

SELECT google_columnar_engine_refresh_index(index => INDEX_NAME);

Remplacez INDEX_NAME par une chaîne contenant le nom de l'index ScaNN à actualiser.