DynamicsPerf : Purger les données

Plusieurs administrateurs de système utilisent l’outil DynamicsPerf pour monitorer les performances de leur système Dynamics AX. Plusieurs d’entre nous se retrouvent avec la base de données DynamicsPerf énorme.

Comment purger-les données ? Les recherches nous mènent à ce blogue:

What’s New in DynamicsPerf 2.0 Release Candidate 0 sous la section Additional Options for controlling the size of the DynamicsPerf database.

Le blogue nous explique comment contrôler la grosseur de la table query plans. Toutefois, le mal est fait dans mon cas, la table est trop grosse et je dois purger les données.

Voici une requête qui vous permet de savoir le nombre de lignes par mois ainsi que son pourcentage d’allocation dans la table:

USE [DynamicsPerf]

SELECT YEAR(DATE_UPDATED) AS Year,
MONTH(DATE_UPDATED) AS Month,
Count(*) AS [Number of Records],
(Count(*)* 100 / (SELECT Count(*) FROM query_plans)) AS Percentage
FROM query_plans
GROUP BY YEAR(DATE_UPDATED),
MONTH(DATE_UPDATED)
ORDER BY Year ASC, Month ASC


Dans mon cas, je veux supprimer les données plus anciennes que juillet 2016. Ceci représente 728 643 lignes.

Il est important de ne pas supprimer toutes les lignes en une seule transaction. Ceci aurait pour conséquence de prendre des heures à finir et le fichier de log SQL deviendrait énorme. Il est mieux de faire une boucle afin de supprimer les lignes.

Avant de commencer l’opération, il faut configurer le  Recovery Model de la base de données à SIMPLE


Ensuite, vous pouvez purger les données avec la requête suivante;

USE [DynamicsPerf]

WHILE EXISTS (SELECT 1 FROM query_plans WHERE DATE_UPDATED < '2016-07-01 00:00:00.000')
BEGIN
    DELETE TOP (1000) FROM query_plans WHERE DATE_UPDATED < '2016-07-01 00:00:00.000'
END;

Vous pouvez aussi configurer une tache planifier afin de supprimer les données plus ancienne qu'un mois:

USE [DynamicsPerf]

WHILE EXISTS (SELECT 1 FROM query_plans WHERE DATE_UPDATED < DATEADD(mm,-1,GETDATE()))
BEGIN
    DELETE TOP (1000) FROM query_plans WHERE DATE_UPDATED < DATEADD(mm,-1,GETDATE())
END;

Ensuite, vous pouvez réduire la taille de votre base de données:

Previous
« Prev Post