Lorsque des lignes de table sont ajoutées, supprimées ou mises à jour, le moteur de données en colonnes ne met pas immédiatement à jour les données dans le store orienté colonnes. Au lieu de cela, il marque le contenu affecté dans le store orienté colonnes comme non valide, et 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 ces améliorations. Lorsque ce seuil d'actualisation est atteint, le moteur de données en colonnes utilise une tâche 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 indique que le contenu donné dans le store orienté colonnes est marqué pour l'actualisation lorsque 50% de son contenu est devenu non valide. Vous pouvez modifier ce seuil d'actualisation pour ajuster la surcharge de l'actualisation automatique et potentiellement obtenir de meilleures performances de requête continues pour la charge de travail de votre application.
De plus, vous pouvez actualiser manuellement les tables et les index ScaNN chargés dans le moteur de données en colonnes à tout moment. En règle générale, vous effectuez une actualisation manuelle lorsque vous souhaitez que les modifications apportées à une table soient reflétées dans le store orienté colonnes dès que possible après avoir effectué les modifications.
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 affectées dans le store orienté colonnes comme non valides. Vous pouvez vérifier le pourcentage de données non valides pour vos tables et 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
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, procédez comme suit :
Ouvrez le fichier manifeste de votre cluster de bases de données
DBCluster.Dans la section
primarySpec, ajoutez le paramètregoogle_columnar_engine.refresh_threshold_percentageau blocparameters:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: # ... existing cluster configuration ... primarySpec: # ... existing primary configuration ... parameters: google_columnar_engine.refresh_threshold_percentage: "THRESHOLD"Remplacez les variables suivantes :
- DB_CLUSTER_NAME : nom du cluster de bases de données.
- THRESHOLD : valeur entière comprise entre
1et100. 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é pour l'actualisation.
Appliquez le fichier manifeste
DBClustermis à jour :kubectl apply -f DB_CLUSTER_MANIFESTRemplacez
DB_CLUSTER_MANIFESTpar le chemin d'accès au fichier manifesteDBClusterque vous avez modifié.
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.