Comment se débarrasser des grandes tables avec le moins d'impact sur l'expédition des grumes?

Dec 31 2020

Avoir deux tables associées semi-volumineuses (284,6876,609 lignes - 156,785,176 Ko et 4,2628,162 lignes - 2,212,464 KB) dans un journal livré db qui doit être purgé ou supprimé. Comment puis-je disposer de ces deux tables tout en minimisant l'impact sur l'expédition des journaux?

Réponses

11 J.D. Dec 31 2020 at 21:08

Si vous DROPutilisez les tables, cela entraînera la génération de journaux minimaux car cela ne force pas immédiatement la récupération de place sur l'espace utilisé, il supprime simplement la référence. De même, vous pouvez obtenir le même résultat avec TRUNCATE(bien que je pense que sur les grandes tables, il pourrait y avoir plus de frais généraux que DROP, je devrai faire des recherches et mettre à jour ma réponse en conséquence).

C'est un très bon article qui détaille pourquoi TRUNCATEet les DROPopérations sont incroyablement rapides et génèrent des journaux minimes, ce qui est dû à une fonctionnalité de SQL Server appelée abandon différé .

Quoi qu'il en soit, évitez DELETEsinon cela générera une tonne de journaux qui devront être expédiés et réappliqués à la base de données cible.

Cette question StackOverflow a plusieurs réponses avec de bonnes informations sur la suppression efficace des données d'une grande table (certaines peuvent ne pas être spécifiquement liées à votre question, mais bonnes pour une référence future ou d'autres utilisateurs avec des problèmes similaires).