C'est une excellente question et je trouve les réponses fascinantes. Je vais commenter ceci en tant que DBA Oracle et mes réponses sont spécifiques à la base de données Oracle. C'est une grave erreur que beaucoup de gens font quand ils travaillent avec Oracle. Je ne sais pas si cela s'applique également à d'autres applications. Ce n'est pas censé être hors sujet, mais est conçu comme une réponse spécialisée.
Lorsque vous optimisez les performances avec Oracle, vous cherchez vraiment à éliminer les goulots d'étranglement. Bien que la plupart d'entre nous ne le disent pas, il est basé sur la théorie des contraintes: https://en.wikipedia.org/wiki/Theory_of_constraints
La mémoire peut ne pas être votre goulot d'étranglement. Oracle dispose de mécanismes complexes pour gérer la mémoire et une simple augmentation de la mémoire peut réellement ralentir les choses si le goulot d'étranglement se situe dans d'autres domaines. Permettez-moi de vous donner un exemple très commun.
Les requêtes semblent être lentes. Le consensus est que si nous augmentons la RAM, nous devrions augmenter le temps de réponse des requêtes car la mémoire est plus rapide que le disque. Eh bien ... Voici comment Oracle gère la gestion de la mémoire pour les données. Oracle propose divers emplacements de mémoire affectés à des tâches spécifiques. Ainsi, vous pouvez augmenter ces souvenirs. La zone utilisée pour les données s'appelle le «cache de tampons». Il s'agit d'une série de listes chaînées (leur nombre a tendance à augmenter avec chaque version). Chaque fois qu’un bloc est détecté sur le disque au cours d’une requête, un algorithme de hachage est exécuté pour déterminer la liste dans laquelle le coller. il faut donc payer pour l'obtenir ... ce n'est pas vraiment important).
CEPENDANT, lorsque vous exécutez une requête, Oracle retire le verrou de la chaîne de mémoire tampon que vous recherchez à ce moment-là. Ce verrouillage (remarque: il ne s'agit pas d'un verrou. Google "verrouille" si vous ne connaissez pas la différence) bloque toutes les autres opérations de cette chaîne pendant la durée de votre lecture. Donc, il bloque les lectures ET les écritures (ce qui est totalement différent du fait qu'Oracle prétend que les verrous ne bloquent pas les lectures).
Cela est nécessaire car, au fur et à mesure que vous lisez le bloc dans la chaîne, Oracle le déplace en fonction de la fréquence à laquelle il est "demandé". Les blocs les plus fréquemment demandés sont déplacés vers le haut et les moins fréquemment, en bas et vieillis. Vous ne pouvez pas avoir 2 sessions en train de lire une liste chaînée et de déplacer des blocs ou vous obtiendrez des pointeurs pointant vers des emplacements inexistants.
Lorsque vous augmentez la taille de la mémoire, vous augmentez la taille de chaque liste liée. Cela augmente le temps nécessaire pour lire la liste. Une requête simple ou complexe peut faire des dizaines de milliers, voire des millions de lectures vers le bas de listes chaînées. Chaque lecture est rapide, mais leur nombre conduit à des verrous qui bloquent d’autres sessions. Oracle appelle cela un "E / S logique" (ou un tampon get ou autre chose. Ce jargon est spécifique à Oracle et peut vouloir dire autre chose dans d'autres secteurs de l'informatique).
Donc, si la liste est longue et que le code SQL est vraiment mauvais, les instructions SQL conserveront leurs verrous plus longtemps. L'augmentation de la mémoire peut occasionnellement réduire les performances. La plupart du temps, cela n'arrivera pas. Les gens dépenseront beaucoup d'argent et ne verront aucun avantage. Cela étant dit, il arrive parfois que vous ayez besoin de plus de mémoire dans le cache, mais vous devez identifier correctement le goulot d'étranglement pour savoir si cela convient. Je ne peux pas discuter de la façon d'analyser cela dans ce post. Voir les forums DBA. Certaines personnes en discutent là-bas. C'est assez complexe.
Quelqu'un at-il des exemples spécifiques avec d'autres logiciels où cela peut arriver? Il existe un formidable ouvrage intitulé "The Goal" qui traite de la réduction des contraintes dans une usine. Ce processus est très similaire à ce que font les administrateurs de base de données Oracle lors de l'évaluation des problèmes de performances. C'est souvent la lecture standard dans les programmes de MBA. Il est très utile de lire pour les professions informatiques.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt