Pourquoi SQL Server consomme-t-il plus de mémoire serveur?


36

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


3
Comment avez-vous déterminé que l'utilisation de la RAM par SQL Server est à l'origine de tout goulot d'étranglement? La lenteur dans quoi? Quoi qu'il en soit, SQL Server devrait être plus efficace s'il utilise autant de RAM que possible (ou même plus que prévu ou souhaité). Et si vous avez d'autres applications sur le serveur qui souffrent du fait que SQL Server utilise la mémoire (comme prévu), déplacez-les vers un autre serveur .
Aaron Bertrand

J'ai utilisé la méthode ici lucidica.com/help/got-sql-eating-up-ram Faites-moi savoir si cela vous a aidé :) Cordialement , Nikita.
Nikita Kosousov

Réponses:


48

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 memorylimite 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 memorycontrô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

Les options de configuration min serveur et max serveur définissent les limites supérieures et inférieures de la quantité de mémoire utilisée par le pool de mémoire tampon du moteur de base de données Microsoft SQL Server.

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).


11

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.


6

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:

  1. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur un serveur et sélectionnez Propriétés.
  2. Cliquez sur le nœud de mémoire.
  3. Sous Options de la mémoire du serveur, entrez la quantité souhaitée pour Mémoire serveur minimale et Mémoire serveur maximale.

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!



En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.