Questa è una GRANDE domanda e trovo le risposte affascinanti. Ho intenzione di commentare questo come un DBA Oracle e le mie risposte sono SPECIFICHE per il database Oracle. Questo è un grave errore che molte persone fanno quando lavorano con Oracle. Non sono sicuro che ciò si applichi anche ad altre applicazioni. Questo non è pensato per essere fuori tema, ma è inteso come una risposta specializzata.
Quando ottimizzi le prestazioni con Oracle, stai davvero cercando di eliminare i colli di bottiglia. Sebbene la maggior parte di noi non lo dica, si basa sulla teoria dei vincoli: https://en.wikipedia.org/wiki/Theory_of_constraints
La memoria potrebbe non essere il collo di bottiglia. Oracle ha meccanismi complessi per la gestione della memoria e solo aumentare la memoria può effettivamente rallentare le cose se altre aree sono dovute al collo di bottiglia. Lascia che ti faccia un esempio MOLTO comune.
Le query sembrano lente. Il consenso è che se aumentiamo la RAM, dovremmo aumentare i tempi di risposta delle query poiché la memoria è più veloce del disco. Bene ... Ecco come Oracle gestisce la gestione della memoria per i dati. Oracle ha una varietà di posizioni di memoria allocate per compiti specifici. Quindi puoi aumentare questi ricordi. L'area utilizzata per i dati è denominata "cache buffer". Questa è una serie di elenchi collegati (il numero di essi tende ad aumentare con ogni versione). Ogni volta che viene trovato un blocco sul disco durante una query, un algoritmo hash viene eseguito su di esso per determinare in quale elenco incollarlo. Dove inserirlo nell'elenco si basa su un algoritmo di conteggio dei tocchi (spiegato sul sito di supporto Oracle, quindi devi pagare per ottenerlo ... non è molto importante).
TUTTAVIA, quando si esegue una query, Oracle elimina un blocco sulla catena di buffer che si cerca in quel momento. Questo LATCH (nota: questo non è un lucchetto. Google "aggancia" se non conosci la differenza) blocca tutte le altre operazioni su quella catena per la durata della tua lettura. Quindi blocca le letture E le scritture (questo è completamente diverso da Oracle che sostiene che i blocchi non bloccano le letture).
Ciò è necessario perché mentre leggi il blocco nella catena, Oracle lo sposta in base alla frequenza con cui viene "richiesto". I blocchi richiesti più frequentemente vengono spostati in alto e i blocchi richiesti più frequentemente vengono lasciati in basso e scaduti. Non puoi fare in modo che 2 sessioni leggano un elenco collegato e spostino i blocchi o colpirai i puntatori che puntano a posizioni inesistenti.
Quando si aumenta la dimensione della memoria, si aumenta la dimensione di ciascun elenco collegato. Ciò aumenta il tempo necessario per leggere l'elenco. Una singola query scadente o complessa può fare decine di migliaia o addirittura milioni di letture in elenchi collegati. Ogni lettura è veloce, ma il numero di esse porta a blocchi effettuati e questi bloccano altre sessioni. Oracle lo chiama "IO logico" (o buffer get o altre cose. Questo gergo è specifico di Oracle e potrebbe significare qualcos'altro in altre parti dell'IT).
Quindi, se l'elenco è più lungo e hai un SQL davvero scadente, le istruzioni SQL manterranno i loro fermi più a lungo. L'aumento della memoria può a volte RIDURRE le prestazioni. Il più delle volte, questo non accadrà. Le persone spenderanno molti soldi e non vedranno alcun beneficio. Detto questo, ci sono momenti in cui hai bisogno di più memoria nella cache del buffer, ma devi identificare correttamente il collo di bottiglia per sapere se questo è appropriato. Non posso discutere su come analizzare questo in questo post. Vedi i forum DBA. Alcune persone ne discutono lì. È piuttosto complesso.
Qualcuno ha esempi specifici con altri software in cui ciò può accadere? Esiste un fantastico libro di lavoro chiamato "The Goal" che discute di alleviare i vincoli in una fabbrica. Questo processo è molto simile a quello che fanno gli amministratori di database Oracle nel valutare i problemi di prestazioni. Spesso è una lettura standard nei programmi MBA. È molto utile leggere per le professioni IT.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt