Nettoyage des large objects dans SAS Infrastructure Data Server
Les objets volumineux ( large objects ) dans SAS Infrastructure Data Server sont stockés séparément des tables qui les référencent.
Les large objects dans PostgreSQL sont principalement utilisés dans les situations où les fichiers ou les données volumineuses ne peuvent pas être directement stockés dans les champs de la table ou nécessitent des opérations spécifiques, comme des lectures ou écritures partielles.
Ces large objects sont stockés dans la
catalogue pg_catalog.largobject. Un Large Object est identifié par un OID qui lui est affecté lors de sa création. Chaque Large Object est coupé en segments ou « pages » suffisamment petits pour être facilement stockés dans des lignes de pg_catalog.largobject
Lorsqu'une ligne est mise à jour ou supprimée, ces objets peuvent devenir orphelins . Il est donc nécessaire de supprimer régulièrement ces objets orphelins afin de libérer de l'espace disque.
Pour surveiller la quantité d'espace disque avant et après l'exécution des scripts mentionnés, lancez le script monitor_pg_connection.sh. ( avec l'utilisateur sas ) :
1 |
/opt/sas/viya/home/libexec/sasdatasvrc/script/maintenance/monitor_pg_connection.sh |
Un fichier journal est alors créé dans
1 |
/opt/sas/viya/config/var/log/sasdatasvrc/ |
Ce fichier journal contient des informations sur les tables ou bases de données qui consomment de l'espace disque.
sas_vacuum_large_objects.sh
SAS Viya 3.5 propose un script utilitaire permettant de réindexer et de nettoyer chaque table dans SAS Infrastructure Data Server . Il est recommandé d'exécuter ce script pendant les cycles de maintenance afin d'éviter des verrouillages prolongés sur les tables.
Pour exécuter le script de nettoyage, il suffit de lancer le shell suivant :
1 |
/opt/sas/viya/home/libexec/sasdatasvrc/script/maintenance/sas_vacuum_large_objects.sh |
Vous pouvez utiliser l'option -h pour connaitre les options de lancement :
Lorsque vous exécutez le script sans aucune option, les commandes s'exécutent en mode "dry run", ce qui vous permet d'obtenir une estimation des données qui seraient nettoyées.
Il s'agit d'un mode d'exécution qui permet de simuler ou de prévisualiser les actions qu'un script ou un processus effectuerait, sans appliquer réellement ces actions. C'est une manière de vérifier ce qui se passerait si vous exécutiez le script sans modifier réellement les données ou les configurations.
L'exécution du script sas_vacuum_large_objects.sh supprime uniquement les grands objets orphelins ; elle ne libère pas d'espace disque.
Pour libérer de l'espace disque, vous devez exécuter le script sas_reindex_vac.sh.
Une analyse approfondie est nécessaire avant de lancer ce script, car il requiert un espace disque libre équivalent à 2,5 fois la taille des données traitées.
Assurez-vous de lancer le script sas_reindex_vac.sh après avoir exécuté le script sas_vacuum_large_objects.sh
sas_reindex_vac.sh
Un script utilitaire est fourni pour réindexer et nettoyer automatiquement chaque table dans les bases de données de SAS Infrastructure Data Server
SAS recommande d'exécuter ce script pendant un cycle de maintenance afin de réduire le risque de blocage d'une commande PostgreSQL en raison d'un verrouillage prolongé sur une table. En cas de blocage, vous pourriez avoir besoin de redémarrer SAS Infrastructure Data Server pour éliminer le verrou.
Le script est sas_reindex_vac.sh et se trouve dans le répertoire /opt/sas/viya/home/libexec/sasdatasvrc/script/maintenance/
Vous pouvez lancer le script ci-dessous avec l'option -h pour connaitre les options :
1 |
/opt/sas/viya/home/libexec/sasdatasvrc/script/maintenance/sas_reindex_vac.sh -h |
Vous pouvez lancer le script, vous pouvez utiliser l'option ci-dessous :
Utilisation du Script
En tant qu'utilisateur d'installation SAS (sas) ou avec des privilèges root, connectez-vous au nœud pgpool ou à la machine du nœud PostgreSQL.
Exécutez le script avec les options appropriées à votre situation.
Exemple:
1 |
/opt/sas/viya/home/libexec/sasdatasvrc/script/maintenance/sas_reindex_vac.sh -s postgres -d 'SharedServices' |
S'il n'y a pas d'erreurs lors de l'étape précédente, vous avez terminé.
Si vous aviez arrêté tous les services SAS Viya, vous pouvez maintenant arrêter le serveur SAS Infrastructure et redémarrer tous les services SAS Viya.
Documentations
Routine Maintenance Tasks -> Remove Large Orphaned Data Objects (Linux)
Routine Maintenance Tasks -> Re-Index and Auto Vacuum Database Tables (Linux)
Problem Note 70734: Updates to sas_reindex_vac.sh for SAS® Viya® 3.5