Nous avons eu des rapports de requêtes s'exécutant lentement ou expirant tôt le matin, et le seul travail que je vois en cours d'exécution qui pourrait affecter cela est notre travail de sauvegarde de base de données.
La base de données elle-même fait environ 300 Go et le travail de sauvegarde commence à 4h30 et ne se termine que peu après 7h00. La syntaxe actuelle de notre travail de sauvegarde est la suivante:
BACKUP DATABASE [DatabaseName]
TO DISK = N'E:\Database Backups\DatabaseName.Bak'
WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak',
NOSKIP, STATS = 10, NOFORMAT
E:\
est une partition sur le serveur qui contient à la fois les bases de données et les sauvegardes de bases de données.
Il convient également de noter qu'il s'agit d'un serveur virtuel, et non d'un serveur autonome dédié. Nous avons commencé à recevoir des plaintes concernant les ralentissements pendant le processus de sauvegarde juste après notre passage à un serveur virtuel, donc je pense que cela peut être lié.
Existe-t-il un moyen d'exécuter ce travail de sauvegarde afin qu'il n'affecte pas les performances de la requête pendant son exécution?
Nous utilisons SQL Server 2005
STATS
? Êtes-vous sûr d'avoir besoin des autres options (NOUNLOAD
, NOSKIP
, NOFORMAT
)? Je n'ai effectué aucun test de performances approfondi sur l'ensemble de la matrice d'options, mais à mon humble avis, vous ne devez utiliser que les options dont vous savez avoir besoin.Il s'agit d'un problème courant, il existe plusieurs solutions et dépend vraiment de votre environnement. Passons en revue:
1 - Compression de sauvegarde à la volée
En 2008, la compression de sauvegarde R1 est devenue disponible dans Enterprise, en 2008R2, elle est devenue disponible dans Standard. C'est énorme. Cela vous fera gagner beaucoup de temps. Si vous pouvez mettre à niveau, allez-y. Si vous ne le pouvez pas, consultez l'utilitaire HyperBak de RedGate , ou Quest LiteSpeed . Les deux ont un essai gratuit.
2- Sauvegardes complètes et diff.
J'ai hérité d'une base de données de prod de 2 To, ce qui a entraîné de nombreux délais d'attente pour une grande société Internet 24h/24 et 7j/7 sur laquelle j'ai travaillé. Nous avons activé les sauvegardes complètes et différentielles, ce qui nous a fait gagner beaucoup de temps. Je prendrais une sauvegarde complète le dimanche à midi lorsque l'activité était faible et je prendrais des diffs pendant la semaine. Cela a permis d'économiser beaucoup d'espace. Le travail de Diff est différent des journaux de transactions car ils fonctionnent sur les pages de base de données qui ont été modifiées. Toutes les pages modifiées sont sauvegardées. Ainsi vous effectuez une restauration complète, puis la restauration diff pour ajouter les pages modifiées.
3- Quel est votre goulot d'étranglement?
L'analyse des goulots d'étranglement est importante à diagnostiquer. Sauvegardez-vous sur la même baie de disques que vos fichiers de données? Vos fichiers de données sont-ils indexés? Quel est votre DISK SEC/READ et DISK SEC/WRITE pour les disques de données pendant les sauvegardes? J'ai modifié les sauvegardes pour créer 4 fichiers. Chaque fichier a son propre rédacteur de threads et dans notre SAN qui a très bien fonctionné. Testez-le, j'ai réduit 45 minutes en créant simplement 4 fichiers de sauvegarde. Assurez-vous simplement que vos mesures de disque répertoriées ci-dessus sont Obtenez une ligne de base.
4- Réplication sur un autre serveur et sauvegarde
Celui-ci est légèrement avancé. Vous devez vous assurer que votre base de données répliquée est à jour et vous avez besoin d'une surveillance appropriée pour cela. Si c'est le cas, vous pouvez simplement sauvegarder la base de données répliquée.