Bonjour,
Sur une base de dev utilisée pour de l'alimentation de cubes Olap, je cherche à vider une table.
Cette table comporte, entre autre, un champ qui me permet via une jointure de filtrer une partie de celle-ci.
Je cherche donc à supprimer dans cette table une partie des lignes ce qui sature le journal de transactions.
Quelques détails :
La base fait 25 Go avec 5Go de journaux, en mode simple.
La table contient plus de 5 millions de lignes et je cherche en supprimer 99%.
Je ne peux pas utiliser de truncate et boucler sur un nombre de ligne, pour supprimer par partie, me dérange particulièrement.
J'exécute via un package SSIS à plusieurs moments de mon alimentation sur des tables différentes.
J'ai un index cluster sur le champ utilisé pour ma jointure.
Un sp_spaceused sur la table me renvois 817 Mo de data et 5 Mo d'index.
Utilisant un plan faisant un Clustered Index Seek sur ma table de faits, un nested loops avec la table DimSource puis il termine par un Clustered Index Delete.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 delete Ir.FtPv from Common.DimSource src JOIN Ir.FtPv ft ON ft.SourceId = src.SourceId where src.Code = 'S'
J'ai pour le moment du mal à convaincre les DBA d'augmenter la taille du journal pour cette base de dev et à part faire un truncate manuel avant mon alimentation, je n'ai pas beaucoup de solution pour le moment![]()
Partager