Je commence tout juste à en apprendre davantage sur l'utilisation de la mémoire sur SQL Server. Lorsque vous utilisez la requête dans la réponse à la question SQL Server 2008 R2 "Ghost Memory"? , J'ai découvert qu'une seule base de données prend la part du lion de l'espace dans le pool de mémoire tampon. En regardant plus loin, en utilisant sys.allocation_units
et sys.indexes
, j'ai confirmé que cela est probablement dû à l'utilisation intensive des index dans la base de données. La plupart des index sont regroupés.
Un autre développeur de base de données pense que nous avons des problèmes de mémoire sur le serveur - que les requêtes commencent à s'exécuter longtemps car il n'y a pas de mémoire disponible.
Ma question est la suivante: l'utilisation de ces index et leur existence dans le pool de tampons enlèvent-elles de la mémoire disponible pour d'autres processus?
"Another database developer believes we are having memory issues on the server"
- sur quoi? De combien de RAM le serveur dispose-t-il, quels sont les paramètres de mémoire d'instance et combien de mémoire est utilisée par le cache de procédure?Réponses:
Oui, les pages de données d'un index utilisé qui sont mises en cache dans le pool de mémoire tampon occuperont de l'espace dans le cache de données . Mais ne laissez pas cela vous empêcher d'utiliser des index (tout d'abord, un index cluster est les données réelles de la table, gardez cela à l'esprit également). L'utilisation d'index (bien conçus et mis en œuvre, bien sûr) est une bonne chose.
Vos problèmes de mémoire ne sont probablement pas dus à la présence d'index sur vos tables . Plongez dans les problèmes de mémoire, quels sont exactement les problèmes? Avez-vous une faible espérance de vie de page ? Comment votre mémoire est-elle configurée sur le serveur? La mémoire maximale du serveur est-elle faible, ce qui limite la taille du pool de tampons?
Pour obtenir une ventilation des pages d'index dans votre cache de données, vous pouvez exécuter la requête ci-dessous:
Pour obtenir ces statistiques par base de données:
la source
Les index consomment de l'espace du pool de tampons, oui. C'est une raison de plus pour laquelle vous devez prendre soin de votre stratégie d'indexation et minimiser les doublons.
N'oubliez pas qu'un index cluster est la table . La seule surcharge qui existe pour un index clusterisé au-delà de celle d'un segment de mémoire (ce qui est généralement indésirable) concerne les pages d'index non-feuille et l'inclusion de la clé de cluster dans tous les index non cluster pour cette table. C'est pourquoi les clés de cluster étroites sont préférées.
Les articles de Kimberley Tripp sur les choix clés groupés sont une excellente référence pour cela.
la source