Gérer les données historiques avec la stratégie de conservation

Important

Azure SQL Edge ne prend plus en charge la plateforme ARM64.

Une fois la stratégie de rétention des données définie pour une base de données et la table sous-jacente, une tâche de minuteur de temps en arrière-plan s’exécute pour supprimer tous les enregistrements obsolètes de la table activés pour la rétention des données. L’identification des lignes correspondantes et leur suppression de la table se produisent de manière transparente, dans la tâche en arrière-plan planifiée et exécutée par le système. La condition d’âge des lignes de table est case activée basée sur la filter_column colonne spécifiée dans la définition de table. Si la période de rétention est définie sur une semaine, par exemple, les lignes de table éligibles pour propre up répondent à l’une des conditions suivantes :

  • Si la colonne de filtre utilise le type de données DATETIMEOFFSET, la condition est filter_column < DATEADD(WEEK, -1, SYSUTCDATETIME())
  • Sinon, la condition est filter_column < DATEADD(WEEK, -1, SYSDATETIME())

Phases de nettoyage de la conservation des données

L’opération de rétention des données propre up se compose de deux phases :

  1. Découverte : Dans cette phase, l’opération de propre up identifie toutes les tables dans les bases de données utilisateur pour générer une liste pour propre up. La découverte se produit une fois par jour.
  2. Nettoyage : dans cette phase, propre up est exécuté sur toutes les tables avec une rétention de données finie, identifiée dans la phase de découverte. Si l’opération de propre up ne peut pas être effectuée sur une table, cette table est ignorée dans l’exécution actuelle et sera retentée dans l’itération suivante. Les principes suivants sont utilisés pendant propre up :
    • Si une ligne obsolète est verrouillée par une autre transaction, cette ligne est ignorée.
    • Le nettoyage s’exécute avec un délai d’expiration de verrouillage par défaut de 5 secondes. Si les verrous ne peuvent pas être acquis sur les tables dans la fenêtre de délai d’expiration, la table est ignorée dans l’exécution actuelle et sera retentée dans l’itération suivante.
    • S’il existe une erreur pendant propre up d’une table, cette table est ignorée et sera récupérée dans l’itération suivante.

Nettoyage manuel

Selon les paramètres de conservation des données appliqués à une table et la nature de la charge de travail sur la base de données, il peut arriver que le thread de nettoyage automatique ne supprime pas complètement toutes les lignes obsolètes lors de son exécution. Pour permettre aux utilisateurs de supprimer manuellement des lignes obsolètes, la sys.sp_cleanup_data_retention procédure stockée a été introduite dans Azure SQL Edge.

Cette procédure stockée prend trois paramètres :

  • @schema_name: nom du schéma propriétaire de la table. Obligatoire.
  • @table_name: nom de la table pour laquelle la propre manuelle est en cours d’exécution. Obligatoire.
  • @rowcount: variable de sortie. Retourne le nombre de lignes qui ont été nettoyées par la procédure stockée de nettoyage manuel. facultatif.

Pour plus d’informations, consultez sys.sp_propreup_data_retention (Transact-SQL).

L’exemple suivant illustre l’exécution de la procédure stockée de nettoyage manuel pour la table dbo.data_retention_table.

DECLARE @rowcnt BIGINT;
EXEC sys.sp_cleanup_data_retention 'dbo', 'data_retention_table', @rowcnt OUTPUT;
SELECT @rowcnt;

Comment les lignes obsolètes sont supprimées

Le processus de nettoyage dépend de la disposition de l’index de la table. Une tâche en arrière-plan est créée pour effectuer le nettoyage des données obsolètes dans toutes les tables où la période de conservation est limitée. Nettoyer la logique de l’index rowstore (tas ou arbre B) supprime les anciennes lignes en segments plus petits (jusqu’à 10 000), ce qui réduit la pression sur le journal de base de données et le sous-système d’E/S. Bien que la logique de propre up utilise l’index B-tree requis, l’ordre des suppressions pour les lignes antérieures à la période de rétention ne peut pas être fermement garanti. En d’autres termes, ne prenez pas de dépendance sur l’ordre de propre up dans vos applications.

Avertissement

Dans le cas des segments de mémoire et des index B-tree, la rétention des données exécute une requête de suppression sur les tables sous-jacentes, qui peut entrer en conflit avec les déclencheurs de suppression sur les tables. Vous devez supprimer des déclencheurs de suppression des tables ou éviter d’utiliser la rétention des données sur les tables qui ont des déclencheurs DML supprimés.

La tâche de propre up pour les index columnstore en cluster supprime des groupes de lignes entiers à la fois (généralement 1 million de lignes chacune), ce qui est efficace, en particulier lorsque les données sont générées et vieillit à un rythme élevé.

Diagram of data retention cleanup.

Une excellente compression des données et une rétention efficace propre up rend les index columnstore cluster un choix parfait pour les scénarios lorsque votre charge de travail génère rapidement une grande quantité de données.

Surveiller la conservation des données propre up

La stratégie de rétention des données propre opérations deup peut être surveillée à l’aide d’événements étendus dans Azure SQL Edge. Pour plus d’informations sur les événements étendus, consultez Vue d’ensemble des événements étendus.

Les événements étendus suivants permettent de suivre l’état des opérations de propre up.

Nom Description
data_retention_task_started Se produit lorsque la tâche en arrière-plan pour propre up de tables avec une stratégie de rétention démarre.
data_retention_task_completed Se produit lorsque la tâche en arrière-plan pour propre up de tables avec une stratégie de rétention se termine.
data_retention_task_exception Se produit lorsque la tâche en arrière-plan pour propre up de tables avec une stratégie de rétention échoue, en dehors du processus de rétention propre up spécifique à ces tables.
data_retention_cleanup_started Se produit lorsque le processus de propre up d’une table avec la stratégie de rétention des données démarre.
data_retention_cleanup_exception Se produit lorsque le processus de propre up d’une table avec une stratégie de rétention échoue.
data_retention_cleanup_completed Se produit lorsque le processus de propre up d’une table avec la stratégie de rétention des données se termine.

En outre, un nouveau type de mémoire tampon en anneau nommé RING_BUFFER_DATA_RETENTION_CLEANUP a été ajouté à la sys.dm_os_ring_buffers vue de gestion dynamique. Cette vue peut être utilisée pour superviser les opérations de nettoyage de la stratégie de conservation des données.

Étapes suivantes