SQL Server consomme 87,5% de la RAM de mon serveur. Cela a récemment causé de nombreux goulots d'étranglement en termes de performances, tels que la lenteur. J'ai étudié ce problème. Une solution courante que je pourrais trouver sur Internet consiste à définir la limite maximale pour SQL Server. Cela a été fait et de nombreuses améliorations ont été obtenues. Je veux savoir pourquoi, si la valeur de mémoire maximale n'est pas définie, pourquoi SQL Server continue de consommer les ressources
36
Réponses:
SQL Server consommera autant de mémoire que vous le lui permettrez . Par défaut, ce nombre engloberait 100% de votre mémoire numérique sur votre machine. C'est pourquoi vous voyez ce que vous voyez. Si vous donnez à SQL Server 24 Go de mémoire, SQL Server fera de son mieux pour utiliser 24 Go de mémoire. Ensuite, SQL Server et le système d'exploitation se battent pour obtenir des ressources, ce qui entraîne toujours des performances médiocres.
Lorsque vous définissez la
max server memory
limite de configuration, vous limitez le nombre de ressources pouvant être allouées par SQL Server au pool de mémoire tampon (pratiquement l'emplacement où sont stockées les pages de données et le cache de procédure). Il existe d'autres serveurs de mémoire dans SQL Server. Par conséquent, pour votre version particulière (2008 R2 et versions ultérieures),max server memory
contrôle uniquement le pool de mémoire tampon. Mais cela va toujours être le plus gros consommateur de mémoire.Référence TechNet sur les effets de la mémoire minimale et maximale du serveur
En ce qui concerne la quantité de mémoire que je devrais laisser à l’OS , c’est une mesure couramment débattue. Tout dépend vraiment, principalement des autres processus en cours d'exécution sur le serveur . À condition qu'il s'agisse d'un serveur véritablement dédié (et ce n'est presque jamais le cas). J'aime voir au moins 4 Go de mémoire pour le système d'exploitation (et même davantage pour les boîtiers gros matériels). Mais surtout, surveillez la quantité de mémoire inutilisée disponible. Soyez libéral et donnez plus de mémoire à SQL Server si vous remarquez beaucoup de mémoire disponible (peut être surveillée via perfmon) et de mémoire non utilisée (bien sûr, en laissant toujours un petit tampon pour ces situations critiques).
la source
SQL Server est conçu pour utiliser toute la mémoire du serveur par défaut. La raison en est que SQL Server met en cache les données de la base de données dans la RAM afin qu'il puisse accéder aux données plus rapidement que s'il le fallait pour lire les données du disque chaque fois qu'un utilisateur en avait besoin. Si nous devions accéder aux disques chaque fois que SQL Server avait besoin des mêmes données encore et encore, les besoins en IO du disque seraient incroyablement élevés.
Normalement, je recommande aux gens de laisser environ 4 Go de RAM pour Windows, mais cela dépend vraiment de la quantité de logiciels en cours d'exécution sur le serveur, des composants de SQL Server que vous utilisez (tous les composants ne suivent pas ce paramètre), etc.
la source
Cela fonctionne instantanément sans avoir besoin de redémarrer SQL:
Options de configuration du serveur de mémoire de serveur
Utilisez les deux options de mémoire du serveur, min server memory et max server memory , pour reconfigurer la quantité de mémoire (en mégaoctets) gérée par le gestionnaire de mémoire SQL Server pour une instance de SQL Server. Par défaut, SQL Server peut modifier ses besoins en mémoire de manière dynamique en fonction des ressources système disponibles.
Procédure de configuration d’une quantité de mémoire fixe Pour définir une quantité de mémoire fixe:
Utilisez les paramètres par défaut pour permettre à SQL Server de modifier ses besoins en mémoire de manière dynamique en fonction des ressources système disponibles. Le paramètre par défaut pour la mémoire minimale du serveur est 0 et le paramètre par défaut pour la mémoire maximale du serveur est 2147483647 mégaoctets (Mo).
J'espère que ça aide!
la source
Comme Eric l'a dit, vous devez gérer la mémoire afin de garder de l'espace disponible pour d'autres processus. Pour une explication générale et des conseils sur la manière de définir la mémoire maximale, consultez le message de Jonathan Kehayias:
http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/
Vous pouvez modifier la recommandation en tenant compte de votre utilisation du serveur.
la source
SQL Server utilisera la RAM disponible à moins que vous ne limitiez l'utilisation. En règle générale, j'essaie de laisser au moins 2 Go d'espace disque disponible pour le système d'exploitation, c'est-à-dire que si vous disposez de 64 Go de RAM physique sur l'hôte, fermez SQL Server @ 62 Go.
http://msdn.microsoft.com/en-us/library/ms191144(v=sql.105).aspx
la source