Esta es una GRAN pregunta y las respuestas me parecen fascinantes. Voy a comentar sobre esto como un DBA de Oracle y mis respuestas son ESPECÍFICAS a la base de datos de Oracle. Este es un gran error que mucha gente comete al trabajar con Oracle. No estoy seguro si esto se aplica a otras aplicaciones también. Esto no pretende ser fuera de tema, pero está pensado como una respuesta especializada.
Cuando ajusta el rendimiento con Oracle, realmente está buscando aclarar cuellos de botella. Aunque la mayoría de nosotros no lo decimos, se basa en la Teoría de las restricciones: https://en.wikipedia.org/wiki/Theory_of_constraints
La memoria puede no ser su cuello de botella. Oracle tiene mecanismos complejos para administrar la memoria y solo aumentar la memoria puede ralentizar las cosas si otras áreas están donde está el cuello de botella. Déjame darte un ejemplo que es MUY común.
Las consultas parecen ser lentas. El consenso es que si aumentamos la RAM, deberíamos aumentar el tiempo de respuesta de las consultas, ya que la memoria es más rápida que el disco. Bueno ... Así es como Oracle maneja la administración de memoria para datos. Oracle tiene una variedad de ubicaciones de memoria que están asignadas a tareas específicas. Así que puedes aumentar estos recuerdos. El área utilizada para los datos se llama 'caché de búfer'. Esta es una serie de listas vinculadas (el número de ellas tiende a aumentar con cada versión). Cada vez que se encuentra un bloque en el disco durante una consulta, se ejecuta un algoritmo hash para determinar en qué lista se debe pegar. El lugar donde se incluye en la lista se basa en un algoritmo de conteo táctil (explicado en el sitio de soporte de Oracle así que tienes que pagar para conseguirlo ... no es realmente importante).
SIN EMBARGO, cuando ejecuta una consulta, Oracle saca un pestillo en la cadena de búfer que busca en ese momento. Este LATCH (nota: esto no es un bloqueo. Google "traba" si no conoce la diferencia) bloquea todas las demás operaciones en esa cadena durante la duración de su lectura. Por lo tanto, bloquea las lecturas Y las escrituras (esto es completamente diferente a los reclamos de Oracle que no bloquean las lecturas).
Esto es necesario porque al leer el bloque en la cadena, Oracle lo mueve en función de la frecuencia con la que se "solicita". Los bloques solicitados con más frecuencia se mueven a la parte superior y los bloques solicitados con menos frecuencia se dejan en la parte inferior y se envejecen. No puede tener 2 sesiones leyendo una lista enlazada y moviendo bloques o golpeará los punteros que apuntan a ubicaciones inexistentes.
Cuando aumenta el tamaño de la memoria, aumenta el tamaño de cada lista vinculada. Esto aumenta el tiempo que lleva leer la lista. Una sola consulta deficiente o una consulta compleja puede hacer decenas de miles o incluso millones de lecturas de listas enlazadas. Cada lectura es rápida, pero la cantidad de ellos lleva a los cierres que se toman y estos bloquearán otras sesiones. Oracle llama a esto un 'IO lógico' (u obtención de búfer o alguna otra cosa. Esta jerga es específica de Oracle y puede significar algo más en otras partes de TI)
Por lo tanto, si la lista es más larga y tiene un SQL muy malo, entonces las sentencias de SQL mantendrán sus latches más tiempo. El aumento de la memoria puede ocasionalmente reducir el rendimiento. La mayoría de las veces, esto no sucederá. La gente gastará mucho dinero y no verá ningún beneficio. Dicho esto, hay ocasiones en que necesita más memoria en la memoria caché del búfer, pero debe identificar correctamente el cuello de botella para saber si esto es apropiado. No puedo discutir cómo analizar esto en este post. Ver los foros de DBA. Algunas personas lo discuten allí. Es bastante complejo.
¿Alguien tiene ejemplos específicos con otras piezas de software donde esto pueda suceder? Hay un excelente libro de negocios llamado 'The Goal' que discute el alivio de las restricciones en una fábrica. Este proceso es muy similar a lo que hacen los DBA de Oracle al evaluar los problemas de rendimiento. A menudo es la lectura estándar en los programas de MBA. Es muy valioso leer para profesiones de TI.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt