Limiter la croissance des données de conversation

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 8 minutes de lecture
  • Au fur et à mesure que les opérations sont effectuées, les tables liées à la conversation augmentent en taille et peuvent finir par affecter les performances du système. Pour améliorer les performances tout en conservant suffisamment d’enregistrements, configurez un processus pour archiver les données passées et nettoyer les tables utilisées pour les conversations en cours.

    Activations recommandées

    Pour limiter la croissance des données associée à une utilisation intensive de Agent virtuel et Messagerie instantanée d'agent, activez les tâches plus propres dans la table suivante :

    Nom de la table Résumé de la tâche de nettoyeur Recommandation
    AWA Disponibilité du canal de l’agent [awa_agent_channel_availability] Supprime AWA les journaux de disponibilité du canal de l’agent de plus de 90 jours. Activation recommandée.
    AWA Présence de l’agent [awa_agent_presence] Supprime AWA les journaux de présence de l’agent datant de plus de 90 jours. Activation recommandée.
    AWA Historique de présence de l’agent [awa_agent_presence_history] Supprime AWA les journaux d’historique de présence de l’agent datant de plus de 180 jours. Aucune action nécessaire, déjà activé.
    AWA Taille du document [awa_document_size] Supprime AWA les journaux de format de document de plus de 90 jours. Activation recommandée.
    AWA Statistiques d’instance [awa_instance_stats] Supprime AWA les journaux de statistiques d’instance datant de plus de 60 jours. Aucune action nécessaire, déjà activé.
    AWA Statistiques de file d’attente [awa_queue_stats] Supprime AWA les journaux de statistiques de file d’attente de plus de 60 jours. Aucune action nécessaire, déjà activé.
    AWA Statistiques du canal de service [awa_service_channel_stats] Supprime AWA les journaux des statistiques des canaux de service datant de plus de 60 jours. Aucune action nécessaire, déjà activé.
    AWA Élément de travail [awa_work_item] Supprime AWA les journaux d’éléments de travail qui ont été acceptés ou annulés et qui datent de plus de 90 jours. Activation recommandée.
    Interaction [interaction] Supprime les journaux d’interaction de plus de 90 jours. Activation recommandée.
    Blob JSON d’interaction [interaction_json_blob] Supprime les journaux blob JSON d’interaction de plus de 60 jours. Activation recommandée.
    Profil de groupe actif [live_group_profile] Supprime les journaux de profil de groupe actifs datant de plus de 60 jours. Activation recommandée.
    Consommateur [sys_cs_consumer] Supprime les journaux de consommateur qui ont un ID utilisateur [user_id]=5136503cc611227c0183e96598c4f706 et qui datent de plus de 60 jours. Déjà défini sur Actif ou ajoutez Nom [name] = Utilisateur invité à la condition.
    Contexte de l’appareil consommateur [sys_cs_consumer_device_context] Ajoute la règle de cascade de référence [reference_cascade_rule]=règle de suppression à la colonne Compte de consommateur [consumer_account]. Aucune action n’est requise.
    Conversation [sys_cs_conversation] Supprime les journaux de conversation de plus de 60 jours. Aucune action nécessaire, déjà activé.

    Quelles tables doivent être nettoyées

    Ces tables doivent être nettoyées, car elles peuvent atteindre des millions d’enregistrements dans des instances de longue durée :

    • Historique de présence de l’agent [awa_agent_presence_history]
    • AWA Taille du document [awa_document_size]
    • AWA Élément de travail [awa_work_item]
    • Consommateur [sys_cs_consumer]
    • Contexte de l’appareil consommateur [sys_cs_consumer_device_context]
    • Conversation [sys_cs_conversation]
    • Interaction [interaction]
    • Blob JSON d’interaction [interaction_json_blob]
    • Profil de groupe actif [live_group_profile]

    Il existe d’autres tables connexes, telles que les tables Message de conversation [sys_cs_message] et Message Flux en direct [live_message], qui peuvent également devenir volumineuses. Ces tables possèdent reference_cascade_rule_delete des attributs qui entraînent leur nettoyage en tant qu’effet secondaire du nettoyage des tables de la liste précédente.

    Quels enregistrements des tables doivent être supprimés

    La configuration Auto Flush vous permet de sélectionner les champs Matchfield et Age in seconds (Champ de correspondance) et Age in seconds (Âge en secondes ). Le champ Matchfield correspond à une colonne de date dans la table et le champ Âge en secondes indique quand les suppressions sont déclenchées. Lorsqu’un enregistrement atteint un point où le champ Champ de correspondance a une date plus éloignée dans le passé que le champ Âge en secondes , le nettoyeur supprime l’enregistrement lors de son exécution.

    Idéalement, le champ Champ de correspondance doit indiquer depuis combien de temps l’enregistrement est actif. Les colonnes de la table suivante fonctionnent bien comme le champ Champ de correspondance pour les tables en question, avec la condition supplémentaire dans le champ Conditions lorsque cela est indiqué.

    Table Colonne La colonne est-elle indexée ? Condition supplémentaire
    AWA Disponibilité du canal de l’agent [awa_agent_channel_availability] Mis à jour (sys_updated_on) Non agent.active=false
    AWA Présence de l’agent [awa_agent_presence] Mis à jour (sys_updated_on) Non
    AWA Historique de présence de l’agent [awa_agent_presence_history] Mis à jour (sys_updated_on) Oui
    AWA Taille du document [awa_document_size] Mis à jour (sys_updated_on) Non
    AWA Élément de travail [awa_work_item] Mis à jour (sys_updated_on) Oui stateINaccepted,cancelled
    Interaction [interaction] Mis à jour (sys_updated_on) Oui
    Blob JSON d’interaction [interaction_json_blob] Mis à jour (sys_updated_on) Non
    Profil de groupe actif [live_group_profile] Mis à jour (sys_updated_on) Non
    Consommateur [sys_cs_consumer] Mis à jour (sys_updated_on) Non name=Utilisateur invité
    Conversation [sys_cs_conversation] Mis à jour (sys_updated_on) Non

    interaction.closed_at et sys_cs_conversation.conversation_completed ne sont pas de bonnes options pour le champ Matchfield , car elles n’ont pas de valeurs pour les conversations défectueuses et certaines interactions fermées. Les écarts peuvent être comblés avec des règles métier qui fixent cette date si elle est vide lorsqu’un changement d’état approprié se produit, mais pour simplifier, utilisez le champ sys_updated_on pour ces tables.

    D’autres tables peuvent être limitées par des conditions du champ État qui garantissent que seules les messageries instantanées fermées sont supprimées. Étant donné que les interactions ne doivent jamais être laissées ouvertes pendant plus de quelques jours en général, ces conditions peuvent être laissées de côté pour rendre les requêtes plus simples et s’exécuter plus rapidement après la dernière mise à jour. L’état de la table awa_work_item peut être plus important car les tâches plus longues, telles que les tickets, sont également représentées.

    Le problème avec la table sys_cs_consumer est que, bien que vous souhaitiez normalement conserver ces enregistrements pour faire correspondre les nouvelles conversations aux utilisateurs existants, dans le cas des utilisateurs invités, un enregistrement différent est créé pour chaque conversation.

    Pour la table sys_cs_consumer_device_context, il existe une référence à la table Compte de consommateur CS [sys_cs_consumer_account] (qui a elle-même une référence à la table sys_cs_consumer), mais la référence n’est pas marquée avec reference_cascade_rule=delete. Il est recommandé d’ajouter cette règle à la référence du compte de consommateur. De cette façon, lorsque le nettoyeur supprime les enregistrements des tables sys_cs_consumer et sys_cs_consumer_account, il les supprime également.

    Les tables awa_agent_presence et awa_agent_channel_availability ne s’agrandissent pas de la même manière que les autres tables, mais sont régulièrement consultées par le moteur d’affectation et peuvent se retrouver avec des entrées périmées d’utilisateurs qui ne sont plus actifs. Les longues entrées inutilisées doivent également être nettoyées ici. Il faut faire très attention à la colonne awa_agent_channel_availability car elle peut ne pas être mise à jour souvent. Pour cette raison, une condition supplémentaire doit être ajoutée à ce nettoyeur afin que seuls les enregistrements associés à des utilisateurs inactifs puissent être supprimés.

    Quand les enregistrements peuvent-ils être supprimés en toute sécurité ?

    Plusieurs éléments doivent être pris en compte pour déterminer à quel moment les enregistrements peuvent être supprimés en toute sécurité :

    • Ne supprimez pas les enregistrements des conversations en cours.

      Pour les conversations instantanées basées sur une session, le seuil d’âge est de quelques jours seulement. Si les conversations par SMS/messagerie sont incluses, le seuil d’âge peut s’étendre à quelques semaines ou plus. Une façon d’évaluer cela est de parcourir toutes les propriétés du formulaire com.glide.cs.*_idle_timeout et de localiser celle avec la valeur la plus élevée.

    • Ne supprimez pas les enregistrements qui contribuent aux tableaux de bord/rapports sur l’activité récente.

      Le AWA tableau de bord d’analyse avancée des interactions comprend un indicateur de tendances hebdomadaires qui effectue une rétrospective de trois mois. Pour une prise en charge complète, vous devez conserver les enregistrements d’interaction et de awa_work_item pendant au moins 90 jours.

    • Ne supprimez pas les enregistrements si l’une de leurs données doit être archivée pour référence ultérieure.

      Le moment de cette opération dépend du moment où toute logique personnalisée est ajoutée pour effectuer l’archivage nécessaire. Vous devriez pouvoir le configurer de manière à ce qu’il s’exécute suffisamment tôt pour ne pas être le facteur décisif.

    Compte tenu de ce qui précède, les seuils d’âge en secondes suivants sont recommandés :
    • interaction, awa_work_item : 7776000 (90 jours - mais cela peut être réduit si vous n’utilisez pas l’indicateur Tendances hebdomadaires ou si vous êtes prêt à définir la rétrospective sur une période plus courte).
    • sys_cs_conversation, live_group_profile, interaction_json_blob, sys_cs_consumer : 2592 000 (30 jours) ou 5184 000 (60 jours).

    Considérations relatives aux performances

    Des index sys_updated_on sont-ils nécessaires pour les tables qui en sont dépourvues ?

    Les tests ont été exécutés sur une instance qui avait 12 000 000+ interactions, avec un nettoyage de table configuré pour une table ayant un index sur sys_updated_on champ (interaction) et une autre qui n’en a pas (interaction_json_blob). Dans les deux cas, pour les exécutions initiales et suivantes, le temps consacré aux suppressions (potentiellement plusieurs minutes) l’emportait largement sur le temps consacré à l’interrogation des enregistrements (2 secondes ou moins). Compte tenu de ce résultat, il n’est pas nécessaire d’ajouter des indices supplémentaires aux tables, car l’impact sur les performances serait minime.

    Quand les tâches initiales et répétées du nettoyeur de table doivent-elles s’exécuter ?

    Normalement, le sys_trigger nettoyeur de table s’exécute une fois par heure. Si un ou plusieurs nettoyeurs sont définis sur des tables contenant de nombreux enregistrements obsolètes, le nombre de suppressions effectuées au cours de cette première exécution peut être très élevé et imposer une charge supplémentaire au système. Avant d’ajuster et d’activer la configuration de nettoyage de table, modifiez temporairement ce programme de nettoyage de table afin que sa prochaine exécution se produise en dehors des heures de travail (heure à laquelle le système est généralement soumis à une charge plus légère).

    S’il n’y a pas d’heures creuses, certaines propriétés régissent les nettoyeurs de table qui peuvent aider. En particulier, glide.db.tablecleaner.chunk_delete_max_time_spent limite le temps que le nettoyeur passe à essayer de supprimer des enregistrements par lots au cours d’une seule exécution. La valeur est exprimée en secondes et est définie par défaut sur 1200 (20 minutes). Cela signifie que dans la configuration du système de base, le nettoyeur de tables s’exécute toutes les heures pendant un maximum de 20 minutes (à titre de référence, au cours d’un test, environ 400 000 interactions pourraient être supprimées en 20 minutes, y compris les suppressions en cascade). Si 20 minutes toutes les heures sont trop agressives, la valeur de la propriété peut être réduite.