Nettoyeur de table
Le nettoyeur de table supprime automatiquement les anciens enregistrements et empêche les données de croître de façon exponentielle.
Le nettoyeur de table est une tâche planifiée qui s’exécute une fois par heure (par défaut) pour supprimer les enregistrements plus anciens, expirés ou indésirables des tables. Le nettoyeur de tables empêche les tables d’atteindre une taille ingérable et améliore les performances des requêtes.
Vous pouvez afficher une liste de règles de nettoyage de table dans la table Effacement automatique [sys_auto_flush] en tapant sys_auto_flush.list dans le navigateur de filtre. La table Effacement automatique affiche les règles pour les tables du système de base et leurs âges d’enregistrement correspondants. Plusieurs règles peuvent apparaître pour une seule table si chaque règle a une condition unique définie.
Quels enregistrements sont supprimés
Chaque règle de nettoyage de table spécifie les éléments suivants :
- La table cible (à partir de laquelle supprimer des enregistrements).
- Une valeur de champ de correspondance qui correspond à une colonne Date/Heure dans la table cible. Idéalement, le champ de correspondance est un champ de date qui représente la durée d’activité de l’enregistrement (par exemple, sys_created_on).
- Valeur Âge, en secondes, qui détermine le moment où la suppression est déclenchée.
- Options pour le nettoyage des enregistrements connexes dans les tables périphériques ou d’audit.
- Une ou plusieurs conditions facultatives pour filtrer les enregistrements à supprimer. Par exemple, vous pouvez spécifier que seuls les enregistrements où « actif = faux ET état = fermé » sont supprimés.
Lorsque la date du champ de correspondance est plus éloignée dans le passé que la valeur Âge en secondes , la tâche de nettoyage de table supprime l’enregistrement.
Gestion des règles lentes
Lorsque la tâche de nettoyeur de table s’exécute, chaque règle de nettoyeur de table exécute plusieurs requêtes dans le cadre du processus. S’il n’y a pas d’index sur le champ de correspondance d’une règle ou sur des parties significatives de sa condition, le traitement des règles peut être lent, car ses requêtes s’exécutent de manière inefficace sur de grandes quantités de données.
Si une règle de nettoyage de table a une requête qui prend plus de 30 secondes, l’ensemble du travail de nettoyeur de table est arrêté. Par défaut, le nettoyeur de table attend deux jours avant d’inclure à nouveau cette règle dans la tâche du nettoyeur de table, ce qui permet à la tâche de nettoyage de table de s’exécuter sans interruption dans l’intervalle. Vous pouvez configurer la durée de la période d’attente en ajoutant une propriété système. Consultez Propriétés du nettoyeur de table.
Désactivation du nettoyeur de table
Vous pouvez empêcher un administrateur de créer une règle de nettoyage de table ou d’exécuter le nettoyeur de table sur une table spécifique en ajoutant l’attribut Désactiver le nettoyeur de table à l’enregistrement de dictionnaire de la table. Pour certaines tables système internes, l’attribut Désactiver le nettoyeur de tables est ajouté par défaut.
Limites du nettoyeur de tables
Notez les limitations suivantes.
- Le nettoyeur de table n’est pas pris en charge pour les tables configurées pour utiliser la rotation de table ou l’extension de table.
- Les performances dépendent de la taille de la table et des conditions que vous spécifiez. Par exemple, si vous utilisez une colonne personnalisée sans index dans une grande table, les performances sont fortement dégradées. Les performances dépendent également du nombre de lignes à supprimer.
- Le nettoyeur de table passe un maximum de 20 minutes pour supprimer les enregistrements d’une seule table. Si les requêtes sont lentes, le volume d’enregistrements supprimés au cours de la période de 20 minutes peut être faible.
- Le nettoyeur de table n’appelle pas
DBDelete.setWorkflow().Cela signifie que les objetsDBDeletes’exécutent avecworkflow=false(false est la valeur par défaut pour un booléen Java), par conséquent les règles métier et les workflows Delete ne sont pas déclenchés.