web-dev-qa-db-fra.com

Utilisation de la mémoire par SQL Server

J'utilise SQL Server 2012. J'ai une procédure stockée qui sera éventuellement accordée, mais j'ai une question. Ma mémoire de serveur est de 32 Go et max la mémoire attribuée dans SQL Server est de 20 Go. Lorsque j'exécute ce SP, les lectures logiques sont d'environ 4000000, donc des horaires de données de données de 4 m avec 8 ko, divisez par 1024, je recevrai 30 Go de données de données en mémoire.

Ma question est la suivante: comment SQL Server peut conserver 30 Go de données en mémoire si je n'ai reçu que 20 Go de mémoire? Peut-être que ma question a l'air idiot mais besoin de vos gars d'aide. Merci

Memory

4
Dharma

Les mathématiques ici concernant votre situation, quelle quantité de mémoire est allouée à SQL Server et combien de données ont été lues pour cette requête est assez non pertinente. Les concepts pertinents de la manière dont SQL Server travaille est ce qui vous manque.

SQL Server n'utilise pas la mémoire pour stocker tous les données lues pour toute la durée de la requête. S'il y a une grande mémoire et que la requête n'utilise pas beaucoup de mémoire, cela peut certainement le faire. Mais pour les requêtes qui renvoient un résultat important, nécessitent un résultat important à trier ou (insertion de la raison de la grande quantité de mémoire nécessaire ici), SQL Server utilisera éventuellement l'utilisation de Tempdb pour stocker ces données.

La majeure partie de la mémoire utilisée par SQL Server est destinée aux pages de données de mémoire tampon afin de réduire la nécessité de lire du disque. L'accès au disque, même sur les SSD les plus rapides, est beaucoup plus lent que l'accès à la mémoire. Donc, pour une seule requête qui doit utiliser un gigaoctet (par exemple) pour trier le résultat, SQL Server utilise TEMPDB au lieu d'expulser un gigaoctet de données du tampon afin de le trier. Si cela fonctionnait de cette façon, une mauvaise requête pourrait exécuter SQL Server hors de la mémoire et vider le tampon et les performances en général seraient localisées.

4
Tony Hinkle