Je cherche des avis et des ressources pour savoir dans quelle mesure les performances d'un serveur augmenteront avec l'ajout de RAM. Quels sont les facteurs qui entrent en jeu ? Existe-t-il un calcul général que l'on peut effectuer ?
Réponses
Trop de publicités?C'est entièrement subjectif...
- Utilisez-vous SQL Server 2005 en tant que serveur 64 bit ?
- La base de données est-elle la seule application sur le serveur ?
- Avez-vous profilé le serveur pour voir s'il y a un problème de mémoire ? ou d'E/S de disque ? Ou le réseau ? Du processeur ?
Si vous constatez une baisse des performances, vous devez identifier le goulot d'étranglement et partir de là. L'utilisation du moniteur de performances de Windows peut vous aider. L'ajout aléatoire de matériel au problème peut ne pas être utile du tout (bien que la mémoire ne fasse généralement pas de mal).
En général, vous obtenez les meilleures performances de la base de données si l'ensemble des données de travail tient entièrement dans la RAM. L'ensemble de travail est le sous-ensemble de vos données qui est régulièrement lu par les requêtes (les mises à jour et les insertions touchent toujours la base de données, donc plus de RAM ne les accélérera pas nécessairement). Vous devez donc d'abord déterminer la quantité de mémoire dont vous avez réellement besoin pour mettre en cache toutes les données pertinentes. Ensuite, vous devez étudier la meilleure façon de fournir cette RAM au serveur SQL.
Pour autant que je sache, il n'existe aucun calcul permettant de prédire l'augmentation des performances en fonction d'une augmentation donnée de la quantité de mémoire. La relation entre les deux n'est pas linéaire, et il y a toujours d'autres facteurs impliqués, comme l'ont noté d'autres personnes. En supposant que vous n'avez pas un goulot d'étranglement massif ailleurs, cependant, l'ajout de RAM aide presque toujours.
Autre chose à noter : si vous utilisez des versions 32 bits de Windows et/ou de SQL Server, la quantité de RAM dont vous disposez est limitée à 2 ou 4 Go, selon la configuration des deux serveurs. Si vous mettez à niveau ambos aux versions 64 bits, vous pouvez utiliser plus de 4 Go de RAM pour améliorer les performances.
Comme l'a suggéré Bart, vous devez isoler et identifier les principaux goulets d'étranglement sur le serveur et les résoudre pour obtenir des performances optimales. Comme vous êtes déjà sur SQL Server 2005, vous pouvez utiliser les statistiques d'attente sur le serveur. Voici une requête provenant des requêtes de diagnostic de Glenn. Voici le lien. http://glennberrysqlperformance.spaces.live.com/blog/cns!45041418ECCAA960!1340.entry
-- Isolez les attentes maximales pour l'instance du serveur depuis le dernier redémarrage ou l'effacement des statistiques. WITH Waits AS (SELECT wait_type, wait_time_ms / 1000. AS temps_d'attente_s, 100. * wait_time_ms / SUM(wait_time_ms) OVER() AS pct, ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS rn FROM sys.dm_os_wait_stats WHERE wait_type NOT IN( 'SLEEP_TASK', 'BROKER_TASK_STOP', 'SQLTRACE_BUFFER_FLUSH', 'CLR_AUTO_EVENT', 'CLR_MANUAL_EVENT', 'LAZYWRITER_SLEEP')) -- filtre les attentes supplémentaires non pertinentes SELECT W1.wait_type, CAST(W1.wait_time_s AS DECIMAL(12, 2)) AS temps_d'attente_s, CAST(W1.pct AS DECIMAL(12, 2)) AS pct, CAST(SUM(W2.pct) AS DECIMAL(12, 2)) AS running_pct FROM Attentes AS W1 INNER JOIN Waits AS W2 ON W2.rn
Cela dit, en général, SQL Server est surtout limité par la mémoire, les entrées-sorties et le processeur, et dans cet ordre. Vous devez regarder la valeur de l'espérance de vie des pages en utilisant perfmon/sql server DMV's. SQL Server prospère s'il dispose de plus de mémoire. Mais notez que je suis contre le fait de jeter du matériel sur un problème alors qu'il serait préférable de le traiter dans les zones TSQL. Le plus probable est que vous devez examiner les requêtes qui font le plus d'entrées/sorties (celles-ci vont probablement détruire le buffer pool), créer des index significatifs, supprimer les index inutilisés, travailler sur les index manquants ou optimiser le langage SQL. L'optimisation du langage SQL est le domaine dans lequel les gens échouent généralement par manque de compétences.