À mesure que les lignes changent, le moteur de données en colonnes marque les données de stockage de colonnes concernées dans AlloyDB pour PostgreSQL comme non valides, et l'accélération des requêtes diminue progressivement. Pour que les requêtes restent rapides, vous pouvez régler le seuil d'actualisation automatique ou actualiser manuellement les tables et les index vectoriels.
Le moteur de données en colonnes ne met pas immédiatement à jour le magasin de colonnes lorsque des lignes de table sont ajoutées, supprimées ou mises à jour. À la place, les requêtes sont planifiées et exécutées à l'aide de données orientées colonnes provenant du store orienté colonnes et de données orientées lignes provenant du cache de lignes et du stockage de la 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 de données en colonnes sont réduites au point où les données en colonnes doivent être actualisées pour retrouver les améliorations des performances des requêtes. 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 25, ce qui indique que le contenu donné dans le store orienté colonnes est marqué pour actualisation lorsque 25% de son contenu n'est plus valide. Vous pouvez modifier ce seuil d'actualisation pour ajuster la surcharge de l'actualisation automatique et potentiellement améliorer les performances des requêtes en cours pour votre charge de travail d'application.
Effectuez une actualisation manuelle des tables et des index vectoriels HNSW et ScaNN lorsque vous souhaitez que les modifications apportées à une table soient reflétées dans le magasin de colonnes dès que possible après les avoir 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 de données en colonnes marque les données concernées dans le magasin en colonnes comme non valides. Vous pouvez vérifier le pourcentage de données non valides pour vos tables et vos vues matérialisées en interrogeant la vue g_columnar_relations. Cela vous aide à décider 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';
Remplacez INDEX_NAME par une chaîne contenant le nom de l'index vectoriel.
Modifier le seuil d'actualisation du moteur de données en colonnes
Pour modifier le seuil d'actualisation du moteur de données 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
- Dans la console Google Cloud , accédez à la page Clusters.
- Cliquez sur le nom du cluster contenant l'instance que vous souhaitez configurer.
- Dans la section Instances dans votre cluster, recherchez l'instance, puis cliquez sur Modifier.
- Dans la section Options, ajoutez une option ou modifiez l'option
google_columnar_engine.refresh_threshold_percentageexistante. - Définissez la valeur sur un entier compris entre
0et100(ou-1pour désactiver l'actualisation automatique). Cette valeur représente le pourcentage de données non valides qui déclenche une actualisation. - Cliquez sur OK.
gcloud
Pour utiliser la gcloud CLI, vous pouvez installer et initialiser la Google Cloud CLI, ou utiliser Cloud Shell.
Pour modifier le seuil d'actualisation du moteur de données en colonnes, 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_IDRemplacez les éléments suivants :
- INSTANCE_ID : ID de l'instance
- THRESHOLD : valeur entière comprise entre
0et100(ou-1pour désactiver l'actualisation automatique). Cette valeur spécifie le pourcentage de blocs de données du contenu qui doivent devenir non valides pour que le contenu soit marqué pour actualisation. - 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 vectoriels dans le store orienté colonnes
Vous pouvez actualiser manuellement les tables et les index vectoriels dans le moteur de données en colonnes à tout moment à l'aide de fonctions SQL dédiées. Les types d'index compatibles sont ScaNN et HNSW.
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 vectoriel dans le moteur de données 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 à actualiser.