Esta é uma ótima pergunta e acho as respostas fascinantes. Vou comentar sobre isso como um DBA Oracle e minhas respostas são ESPECÍFICAS para o banco de dados Oracle. Esse é um grande erro que muitas pessoas cometem ao trabalhar com a Oracle. Não tenho certeza se isso se aplica a outros aplicativos também. Isso não pretende ser fora de tópico, mas é uma resposta especializada.
Quando você ajusta o desempenho com o Oracle, está realmente procurando esclarecer gargalos. Embora a maioria de nós não diga isso, é baseado na Teoria das Restrições: https://en.wikipedia.org/wiki/Theory_of_constraints
A memória pode não ser o seu gargalo. A Oracle possui mecanismos complexos para gerenciar a memória e apenas aumentar a memória pode realmente desacelerar as coisas se outras áreas estiverem onde está o gargalo. Deixe-me dar um exemplo que é MUITO comum.
As consultas parecem lentas. O consenso é que, se aumentarmos a RAM, devemos aumentar o tempo de resposta das consultas, pois a memória é mais rápida que o disco. Bem ... É assim que a Oracle lida com o gerenciamento de memória para dados. A Oracle possui vários locais de memória que são alocados para tarefas específicas. Então você pode aumentar essas memórias. A área usada para os dados é chamada de 'cache do buffer'. Esta é uma série de listas vinculadas (o número delas tende a aumentar a cada versão). Sempre que um bloco é encontrado no disco durante uma consulta, um algoritmo de hash é executado nele para determinar em qual lista ele deve ser inserido. O local onde colocá-lo na lista é baseado em um algoritmo de contagem de toque (explicado no site de suporte da Oracle, então você tem que pagar para obtê-lo ... não é realmente importante).
NO ENTANTO, quando você executa uma consulta, o Oracle remove uma trava na cadeia de buffers que você pesquisa no momento. Esta trava (observação: isso não é um bloqueio. O "trinco" do Google, se você não sabe a diferença) bloqueia todas as outras operações nessa cadeia durante a leitura. Portanto, ele bloqueia leituras e gravações (isso é totalmente diferente do que o Oracle alegando que os bloqueios não bloqueiam leituras).
Isso é necessário porque, à medida que você lê o bloco na cadeia, o Oracle o move com base na frequência com que é 'solicitado'. Os blocos solicitados com mais frequência são movidos para o topo e os blocos solicitados com menos frequência são deixados na parte inferior e com idade acima. Você não pode ter duas sessões lendo uma lista vinculada e movendo blocos ao redor ou você encontrará indicadores que apontam para locais inexistentes.
Quando você aumenta o tamanho da memória, aumenta o tamanho de cada lista vinculada. Isso aumenta o tempo necessário para ler a lista. Uma única consulta ruim ou complexa pode fazer dezenas de milhares ou até milhões de leituras em listas vinculadas. Cada leitura é rápida, mas o número delas leva a travas feitas e elas bloqueiam outras sessões. A Oracle chama isso de 'IO lógico' (ou buffer get ou outras coisas. Esse jargão é específico da Oracle e pode significar algo mais em outras partes da TI).
Portanto, se a lista for mais longa e você tiver um SQL realmente ruim, as instruções SQL manterão suas travas por mais tempo. Aumentar a memória pode ocasionalmente reduzir o desempenho. Na maioria das vezes, isso não acontece. As pessoas gastam muito dinheiro e não vêem nenhum benefício. Dito isto, há momentos em que você precisa de mais memória no cache do buffer, mas precisa identificar corretamente o gargalo para saber se isso é apropriado. Não posso discutir como analisar isso neste post. Veja os fóruns do DBA. Algumas pessoas discutem isso lá. É bastante complexo.
Alguém tem exemplos específicos com outros softwares onde isso pode acontecer? Existe um ótimo livro de negócios chamado 'The Goal' que discute o alívio de restrições em uma fábrica. Esse processo é muito semelhante ao que os DBAs do Oracle fazem ao avaliar problemas de desempenho. Geralmente é leitura padrão em programas de MBA. É muito valioso ler para profissões de TI.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt