J'ai remarqué que certains administrateurs de base de données redémarrent SQL Server très fréquemment, parfois même la nuit. Je pense qu'ils le font pour libérer de la mémoire, ou peut-être aussi pour accélérer les requêtes. Je sais qu'après un redémarrage, les plans de requête doivent être recompilés, mais même en incluant cela, je me demande s'il y a un avantage net à cette pratique.
Est-il vrai que le redémarrage quotidien de SQL Server accélère son exécution?
la source
Bien que les autres réponses soient bonnes, il leur manque un élément important: le cache de fichiers de Windows.
Sur Windows 64 bits, il n'y a pas de limite à la quantité de mémoire que Windows utilisera pour mettre en cache les fichiers. Windows peut vider complètement votre système de mémoire, et à ce stade, vous commencerez à échanger sur le disque. Il a été documenté à quelques endroits:
En redémarrant SQL Server, vous forcez SQL à abandonner la mémoire, laissant ainsi Windows obtenir plus, et la pagination s'arrête temporairement. SQL redémarrera à une utilisation de la mémoire proche de zéro et augmentera progressivement, et lorsque la boîte manquera de mémoire, le redémarrage aidera temporairement. En redémarrant l'intégralité du système d'exploitation, vous forcerez également l'utilisation du cache de fichiers de Windows.
La vraie solution: arrêtez de copier des fichiers à partir du serveur Windows ou limitez la quantité de cache de fichiers utilisée avec le service de cache de fichiers dynamique, comme indiqué dans les articles de blog ci-dessus.
la source
S'il accélère les requêtes, un reniflage de paramètres peut être impliqué. Si un plan de merde est mis en cache et appliqué à des appels ultérieurs inappropriés, le miracle du redémarrage permet au plan commun / correct d'être mis en cache. Si tel est le cas, il existe des moyens infiniment meilleurs de corriger le comportement comme d'autres l'ont indiqué. Mais jusqu'à ce qu'ils arrêtent de redémarrer la boîte, il n'y a aucun moyen d'effectuer une analyse des causes profondes.
la source
Vous ne devez pas redémarrer SQL Server sauf si vous avez modifié les propriétés du service ou défini des traces de démarrage que vous souhaitez appliquer immédiatement.
Comme @RemusRusanu a déclaré de nombreux points, il efface beaucoup de caches et oblige SQL Server à faire beaucoup de travail de démarrage inutile .
Il semble que ce serveur ne soit pas un serveur SQL Server / base de données dédié. Il est préférable qu'un serveur de base de données de production n'ait qu'un seul but ... être un serveur de base de données. Dans ce cas, vous devez mettre de côté suffisamment de mémoire et de ressources pour le système d'exploitation et donner tout le reste à SQL Server. Cela vous amènerait à ne pas affamer d'autres applications ou rôles de serveur.
la source
Je suis d'accord avec le sentiment que si vous faites tout correctement, vous n'aurez peut-être pas besoin de redémarrer / redémarrer votre serveur MSSQL.
Pour moi, cela s'applique au scénario où tout le monde est compétent et où vous pouvez tout réparer.
Je ne suis pas DBA. Je suis un architecte logiciel et une partie de cela implique de construire des schémas de base de données entiers à partir de zéro et, malheureusement , de travailler avec des bases de données tierces sur lesquelles je n'ai absolument aucun contrôle.
Les gens, qui ont créé et maintiennent l'une de nos principales bases de données tierces, l'ont à peine rendue fonctionnelle.
Ai-je mentionné que je ne suis pas non plus un expert en sécurité ou un ingénieur réseau?
Pour moi, la question devient alors: Dois-je redémarrer SQL Server plus souvent que tous les 3 mois?
Planifier des redémarrages pour la promesse d'un pouce supplémentaire de performance, c'est comme danser pour la pluie.
Peut-être que ça viendra, peut-être que ça ne viendra pas, mais vous ne saurez pas avec certitude ce qui a causé la pluie.
Je ne aime pas dire que vous jamais besoin de redémarrer pour résoudre un problème ou vérifier le basculement, mais je n'ai un problème avec redémarrages de planification pour garder un problème de performance inconnue de se produire au hasard.
La seule exception à cette règle est que si vous gérez une base de données tierce non fiable, où le redémarrer toutes les semaines ou deux semble être le seul moyen de la faire fonctionner et vous n'êtes pas autorisé à la réparer ou même à la toucher.
Même alors, vous devez rechercher des correctifs, les partager avec le propriétaire et déclencher l'enfer jusqu'à ce qu'il soit résolu.
la source