SQL Server - Réduction automatique (AUTO_SHRINK), une mauvaise pratique !

La réduction automatique est une mauvaise pratique en environnement de production. Laissez ce paramètre à False dans un environnement de production.


Remarque :
  • Les opérations de rétrécissement de fichiers doivent être réservées aux cas bien particuliers et spécifiques, par exemple, manque d'espace disque sur un serveur de test ou de développement.
  • Les opérations de rétrécissement sont très gourmandes en ressources CPU et opérations disques I/O, et peuvent même générer des time-out du sous-système I/O.
  • Les opérations de rétrécissement provoquent la fragmentation des indexes. Et oui ! le rétrécissement consiste à déplacer les données de façon brutale sans aucune précaution particulière, plus ou moins intelligente.
  • Les opérations de rétrécissement ont pour effet de déplacer beaucoup de données à travers le tampon mémoire, et finissent par vider le cache des données vers le disque, ce qui provoque un ralentissement considérable.
  • Pendant que SQL Server compacte les fichiers, la base est entièrement verrouillée.
  • Lorsque à l’inverse le système a besoins d’espace disque après un rétrécissement, (effet yo-yo après un régime !), le moteur de base de données, pour pouvoir allouer de l’espace disque, pose des verrous de niveau FS, sur les data files, et pendant tout ce temps la base entière est verrouillée. Ceci a également un impact très préjudiciable sur les performances !

Conlusion

Dans un environnement de production assurez-vous que l'option de base de données "Reduction automatique" est bien définie à False, et au besoin lancez la commande ci-dessous :
ALTER DATABASE [Nom_de_votre_base_de_donnees] SET AUTO_SHRINK OFF WITH NO_WAIT