Restauration partielle d’une base de données

J’ai récemment travaillé sur un projet d’archivage de données. Concernant ce point il existe plusieurs méthodes :

  • Utilisation de vue partitionnée (disponible depuis SQL Server 2000)
  • Utilisation de table partitionnée (depuis SQL Server 2005 – édition entreprise)
  • Déplacer des données dans des tables d’archive (depuis SQL Server 1.0 !!! Sourire )

Le choix doit être fait en fonction de l’édition SQL Server (Standard ou Entreprise) mais aussi des besoins formulés par le client. Mais ce n’est pas le but de cet article.

Lors des formations, je suggère toujours à mes stagiaires de créer plusieurs groupes de fichiers au sein de leurs bases de données. Cela fait partie des bonnes pratiques. Isoler les objets système dans le groupe de fichier PRIMARY et ensuite, au minimum, créer un groupe de fichier supplémentaire pour toutes les tables utilisateur.

untitled

Le journal de transaction n’appartient pas à un groupe de fichier. Un groupe de fichier est constitué au minimum d’un fichier, mais peut tout aussi bien en comporter un dizaine.

Il ne faut pas se méprendre, le fait d’ajouter des groupes de fichiers et de multiples fichiers dans chaque groupe ne conduit pas obligatoirement à des gains de performance. Un des premiers bénéfices de ce genre de configuration est de permettre une meilleur gestion de la base. On peut obtenir des gains de performance si les fichiers de données sont hébergés sur différents volumes. Par contre, utiliser la partitionnement de table, conjointement à des groupes de fichiers distincts pour chaque partition peut amener à une augmentation des performances, surtout sur des systèmes très fortement sollicités sur une portion de données très restreintes (diminution des Page Latches ….).

Par contre, en cas de crash, sur une édition entreprise de SQL Server (2005/2008/2008R2), le fait d’avoir “découpé” la base en plusieurs groupes de fichiers peut s’avérer déterminant pour réduire le RTO (Recovery Time Objective => le temps qu’il me faut pour redevenir opérationnel).

La restauration partielle permet de rendre opérationnelle une base de donnée alors que celle-ci est encore en cours de restauration. Il est possible de ne restaurer que les données « courantes » et donner accès aux utilisateurs à l’application, et, à postériori, continuer le processus de restauration pour les données archive. Comme toute fonctionnalité liée à la disponibilité, seule l’édition Entreprise de SQL Server propose cette option (l’édition Développeur le permet aussi, à des fins de test, car il s’agit d’une édition entreprise).

De même si je veux restaurer ma base sur un serveur différent dont l’architecture physique n’est pas identique à mon serveur de production, si ma base est “découpée” en plusieurs fichiers, je vais pouvoir relocaliser une partie des fichiers pendant le processus de restauration.

J’avais initialement prévu de publier ce billet (avec exemple et code SQL)  il y a quelques semaines, mais j’ai été relativement occupé. Entre temps, Paul RANDAL (Blog|Twitter), a publié un article similaire dans les Q&A SQL Server Magazine. Je vous encourage à le lire ici. Je ne vais pas plagier, même si la démo que j’avais initialement prévu diffère légèrement de ce qui est proposé dans l’article de SQL Server Magazine.

Rendez vous donc en formation pour une démo complète … D’ici là, pensez au design de vos bases …

A propos Christophe

Consultant SQL Server Formateur certifié Microsoft MVP SQL Server MCM SQL Server 2008
Cet article, publié dans SQL Server, est tagué . Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s