2010-12-15 4 views
0

J'utilise SQL Server 2008 enterprise sur mon serveur en ligne, la base de données principale contient des tables qui attendent plus de 2 millions d'enregistrements par mois, car ces tables prennent beaucoup de place dans la mémoire de 4 Go installée. puis fermant la RAM du serveur. J'ai limité la RAM de SQL Server à 2 Go, mais quand il utilise ces RAM, il arrête de fonctionner et détruit les connexions.SQL Server et RAM

Est-ce normal? Et que puis-je faire pour récupérer la RAM de SQL Server après avoir interrogé ces grandes tables?

Répondre

5

Sur un serveur Windows dédié exécutant SQL Server, vous disposerez de 5 à 15 Mo de RAM libre sur certains compteurs. C'est normal. Il n'y a pas de fuite de mémoire.

Si vous disposez de 4 Go de RAM, j'utiliserais l'option/3GB sur 32 bits et laisserais à SQL Server la tâche de créer de la RAM. Pour 64 bits, ajoutez plus de RAM et laissez à nouveau SQL Server travailler sur RAM pour lui-même.

Le démarrage de SQL Server de RAM entraînera un débordement de disque lorsque les données seront stockées dans la mémoire.

Si votre SQL Server n'est pas dans une boîte dédiée, déplacez-le sur un.

liens assortis à d'autres questions: SO One, Two, Three

+0

Merci, j'utilise un serveur Windows 64 bits 2008 lorsque je quitte le serveur SQL pour gérer le RAM après un certain temps les sites web hébergés sur le même serveur tournent lentement le serveur SQL devient trop lent et parfois certaines requêtes échouent à s'exécuter Je ne sais pas pourquoi? quand je vois le bélier, il devient bas! est-ce normal – Hadad

+1

@Hadad, vous ne devriez pas héberger d'applications web sur le même serveur que la base de données. – HLGEM

+0

Merci beaucoup, je vais séparer le serveur SQL à une autre machine – Hadad

1

Vous devez laisser Sql Server gérer la mémoire. Il va essayer d'utiliser tout ce que vous lui donnez, car ce qu'il charge dans la mémoire est directement lié à sa rapidité. Ne vous inquiétez pas de le restreindre. Il restituera la mémoire aux autres processus du système quand ils en ont besoin et la récupérera lorsque ces processus seront terminés.

3

Voir ici: The SQL Server Memory Leak Confusion

Fondamentalement, SQL Server utilisera autant de mémoire qu'il peut attraper possible, il est beaucoup plus cher à lire à partir du disque que de RAM. Pour libérer la RAM, vous pouvez redémarrer, mais encore une fois toutes vos requêtes seront lentes car il va frapper le disque

+0

+1 pour le lien - merci! –

1

Vous avez probablement voulez SQL Server pour utiliser beaucoup de RAM. Il est conçu pour utiliser autant de mémoire que vous le pouvez pour mettre en cache les résultats et les tables en mémoire afin que l'accès soit beaucoup plus rapide à l'avenir (comme vous le mentionnez).

Si votre mémoire pour le serveur SQL est faible, il va automatiquement "vieillir" les requêtes et les caches, de sorte que les plus anciens seront supprimés.

Read here pour plus d'informations.