24x7 vs fenêtre de nuit

19

Où puis-je trouver des ressources pour mieux passer à une opération 24h / 24 et 7j / 7? Comment les grandes entreprises dotées de grandes bases de données y parviennent-elles? Nos emplois nocturnes tels que

  1. purger les anciennes données
  2. réindexer
  3. mettre à jour les statistiques

tous semblent avoir un impact critique sur notre système ( c'est-à-dire les utilisateurs en ligne et les flux de données en temps réel). J'ai regardé sur Amazon pour tout livre lié à ce sujet, et jusqu'à présent, je n'ai rien trouvé.

NealWalters
la source
Envisagez-vous de migrer des bases de données d'un serveur à un autre ou de meilleures façons de gérer l'impact de vos tâches nocturnes?
Mike Fal
Comment gérer l'impact des emplois de nuit? C'est-à-dire comment réduire ou éliminer la "fenêtre batch" nocturne.
NealWalters
2
@NealWalters Quelle édition de SQL Server utilisez-vous? (Les reconstructions d'index en ligne et le partitionnement des tables pour remplacer les anciennes données sont disponibles dans Enterprise Edition)
Martin Smith
1
Quelle version de SQL Server utilisez-vous? Entreprise / standard? Enterprise possède certaines fonctionnalités qui peuvent vous permettre d'effectuer certaines opérations en LIGNE avec un impact minimal sur l'utilisateur.
Kin Shah
1
@NealWalters Check out La répartition de DBCC CHECKDB sur plusieurs jours donne plus de détails. Bien que ce soit plus pour CHECKDB, mais cela vous aidera à vous faire une meilleure idée. Faites-nous savoir quelle édition vous utilisez, afin que les gens d'ici puissent mieux vous aider.
Kin Shah

Réponses:

27

La maintenance des bases de données 24h / 24 et 7j / 7 est un sujet assez vaste avec de nombreuses options à considérer. Ce vaste sujet a de nombreux points à considérer, mais nous pouvons essayer de nous baser sur certains des points forts.

Ce que vous voudrez d'abord identifier, c'est que, bien que de nombreuses opérations soient 24h / 24 et 7j / 7, il y a généralement des périodes de faible activité. Vous pouvez tirer parti de ces délais pour exécuter votre maintenance afin de réduire les interférences que vous aurez sur la base de données. La seconde est que vous devrez réserver du temps pour des pannes complètes (pour des choses comme les Service Packs ou les migrations de bases de données), vous devrez donc négocier des fenêtres de maintenance complètes avec votre direction. Pour des éléments spécifiques, vous devrez considérer et planifier chacun d'eux, ainsi que tirer parti de vos outils de manière appropriée. La pièce importante est que vous devez PLANIFIER chacun de ces éléments, tous les exemples que je fournis sont très "vos miles peuvent varier".

Sauvegardes

Les sauvegardes n'ont généralement pas un impact énorme sur les charges de travail, mais doivent être prises en compte car elles peuvent consommer beaucoup d'E / S. Vous voudrez les planifier de manière appropriée et surveiller le temps qu'il faut pour terminer. Le plus gros obstacle ici est que dans une opération 24h / 24 et 7j / 7, vous ne serez probablement pas en mesure d'effectuer des sauvegardes nocturnes complètes tous les soirs de la semaine. Vous voudrez planifier quand vous pouvez prendre des pleins, quand vous prenez des différentiels et des périodes de rétention pour les deux en combinaison avec vos sauvegardes de journaux.

Par exemple, j'exécute des sauvegardes complètes de toutes mes bases de données le dimanche soir (activité la plus faible), des différentiels toutes les autres nuits (du lundi au samedi). Je garde les deux dernières semaines de fulls et diffs sur le disque, les journaux des deux derniers jours. Cela me donne suffisamment de flexibilité pour la récupération, mais je devrai peut-être récupérer des sauvegardes à partir de bandes si nécessaire.

Index / Statistiques Maintenance

Il s'agit du type de maintenance active le plus courant auquel vous devrez faire face. Vous ne pouvez pas l'éviter, mais vous pouvez atténuer l'impact. La règle de base initiale est que vous ne devez effectuer de maintenance que sur les objets qui en ont besoin. Les instructions générales consistent à reconstruire uniquement les index qui sont fragmentés à plus de 30% et supérieurs à 1 000 pages . Si vous avez des statistiques de mise à jour automatique , cela gérera la plupart de la maintenance de vos statistiques, mais un travail de nuit pour garder les choses synchronisées n'est pas une mauvaise idée.

Si vous avez Enterprise Edition, vous avez également accès à d'autres options de gestion de la maintenance. Le plus important est la reconstruction d'index en ligne , qui vous permettra de reconstruire des index pendant qu'ils sont encore en cours d'utilisation (essentiellement, il construit l'index côte à côte, puis l'échange). Vous pouvez également tirer parti du partitionnement pour les "grandes" tables afin de réduire le temps de reconstruction nécessaire.

Votre meilleur pari pour ce type de maintenance, si vous n'avez pas de scripts personnalisés qui gèrent ces meilleures pratiques, est d'utiliser les scripts de maintenance d'Ola Hallengren . Ils sont assez faciles à installer et à configurer et intègrent bon nombre de ces directives.

Vérifications de cohérence DBCC

En fonction de votre charge de travail globale, il se peut que les vérifications DBCC perturbent votre fonctionnement. Il existe deux façons courantes de minimiser votre impact DBCC pour vos bases de données:

  • PHYSICAL_ONLY- L'exécution de cette option vérifiera vos bases de données au niveau d'une page physique et évitera la vérification complète plus invasive. Cela couvrira l'identification des types de corruption les plus probables.
  • Vérification d'une copie restaurée - Si vous disposez de l'espace, vous pouvez restaurer la base de données sur une autre instance et exécuter une vérification DBCC par rapport à la copie restaurée. Cela racontera la même histoire de votre base de données en direct, mais vous n'interférerez évidemment pas avec l'activité. Certaines autres alternatives ici exécutent DBCC sur une copie livrée par journal ou une base de données en miroir.

Cet article de blog fournit plus de détails sur vos options.

Emplois par lots / ETL

Cela se résume vraiment à la façon dont vous concevez vos processus. Votre ETL peut toujours interférer avec les tables OLTP en direct (comme toute autre application), donc quelques clés à garder à l'esprit:

  • Planifiez de tels travaux autour de votre autre maintenance et pendant les périodes de faible activité.
  • Dimensionnez correctement le travail afin qu'il soit regroupé pour les performances et que le lot ne soit pas si grand qu'il verrouille votre table pendant des heures. Exemples des extrémités du spectre: ligne par ligne agonisante (RBAR) contre une suppression d'un million de lignes.
  • Utilisez des tables d'étape et déconnectez votre traitement de données le cas échéant. Ne touchez les choses en direct que lorsque cela est absolument nécessaire.

Conclusion

Encore une fois, il y a beaucoup de chemin à parcourir ici. Ce n'est pas un guide complet, mais un aperçu de haut niveau de certaines approches. Je n'ai même pas discuté des options de haute disponibilité (telles que les groupes de disponibilité et le clustering de basculement). Vous devrez revoir chaque élément et élaborer un plan pour le gérer. À bien des égards, vous devrez également répéter et affiner votre travail à mesure que vous avancerez.

Ressources supplémentaires:

Meilleures pratiques de maintenance VLDB pour SQL Skills

Mike Fal
la source
Réponse convenue, excellente, utile et détaillée. Merci! Nous y travaillons.
NealWalters
Un autre facteur sur lequel nous travaillons est de déplacer une grande partie des données périmées vers un ODS (Operational Data Store) pour garder la base de données principale plus équilibrée. Nous constatons également que la «mise à jour des statistiques» s'exécute environ 2 à 2,5 heures chaque matin, ce qui semble ralentir les performances générales. Est-ce une «meilleure pratique» pour exécuter Update-Stats chaque jour?
NealWalters du
Je le ferai habituellement, mais YMMV. Le risque de ne pas mettre à jour les statistiques est que les statistiques deviennent obsolètes et que vous commencez à avoir de mauvais plans de requête. Vous devrez analyser si c'est un problème ou non si vous n'exécutez pas les statistiques de mise à jour tous les soirs. Vous pouvez voir comment espacer davantage vos travaux de statistiques et voir comment vos requêtes fonctionnent en général.
Mike Fal