Dies ist eine großartige Frage und ich finde die Antworten faszinierend. Ich werde dies als Oracle DBA kommentieren und meine Antworten sind SPEZIFISCH für die Oracle-Datenbank. Dies ist ein großer Fehler, den viele Leute bei der Arbeit mit Oracle machen. Ich bin mir nicht sicher, ob dies auch für andere Anwendungen gilt. Dies ist nicht als Off-Topic gedacht, sondern als spezialisierte Antwort.
Wenn Sie die Leistung mit Oracle optimieren, möchten Sie wirklich Engpässe beseitigen. Obwohl die meisten von uns es nicht sagen, basiert es auf der Theorie der Einschränkungen: https://en.wikipedia.org/wiki/Theory_of_constraints
Der Speicher ist möglicherweise nicht Ihr Engpass. Oracle verfügt über komplexe Mechanismen für die Speicherverwaltung. Wenn der Engpass in anderen Bereichen liegt, kann das Erhöhen des Arbeitsspeichers sogar zu einer Verlangsamung führen. Lassen Sie mich ein Beispiel nennen, das SEHR häufig vorkommt.
Abfragen scheinen langsam zu sein. Der Konsens ist, wenn wir den Arbeitsspeicher erhöhen, sollten wir die Antwortzeit von Abfragen erhöhen, da der Speicher schneller ist als der Datenträger. Nun ... So handhabt Oracle die Speicherverwaltung für Daten. Oracle verfügt über eine Vielzahl von Speicherorten, die bestimmten Aufgaben zugeordnet sind. So können Sie diese Erinnerungen erhöhen. Der für Daten verwendete Bereich wird als "Puffer-Cache" bezeichnet. Dies ist eine Reihe von verknüpften Listen (deren Anzahl mit jeder Version zunimmt). Jedes Mal, wenn ein Block während einer Abfrage auf einer Disc gefunden wird, wird ein Hash-Algorithmus darauf ausgeführt, um zu bestimmen, in welcher Liste er abgelegt werden soll. Wo er in die Liste aufgenommen werden soll, basiert auf einem Algorithmus zur Berührungszählung (auf der Oracle-Support-Site erläutert). man muss also bezahlen, um es zu bekommen ... es ist nicht wirklich wichtig).
Wenn Sie jedoch eine Abfrage ausführen, löst Oracle einen Latch für die Pufferkette, die Sie zu dem Zeitpunkt durchsuchen. Diese VERRIEGELUNG (Hinweis: Dies ist keine Sperre. Google "verriegelt", wenn Sie den Unterschied nicht kennen) blockiert alle anderen Vorgänge in dieser Kette für die Dauer Ihres Lesevorgangs. Es blockiert also Lese- UND Schreibvorgänge (dies ist völlig anders als Oracle, das behauptet, dass Sperren keine Lesevorgänge blockieren).
Dies ist erforderlich, da Oracle den Block beim Lesen in der Kette basierend auf der Häufigkeit der Anforderung verschiebt. Häufiger angeforderte Blöcke werden nach oben verschoben und weniger häufig angeforderte Blöcke bleiben unten und sind veraltet. Sie können nicht zwei Sitzungen haben, in denen eine verknüpfte Liste gelesen und Blöcke verschoben werden. Andernfalls treffen Sie Zeiger, die auf nicht vorhandene Positionen verweisen.
Wenn Sie die Größe des Speichers erhöhen, erhöhen Sie die Größe jeder verknüpften Liste. Dies erhöht die Zeit, die zum Lesen der Liste benötigt wird. Eine einzelne schlechte oder komplexe Abfrage kann Zehntausende oder sogar Millionen von gelinkten Listen lesen. Jeder Lesevorgang ist schnell, aber die Anzahl der Lesevorgänge führt zu Latches, die andere Sitzungen blockieren. Oracle nennt dies ein "logisches E / A" (oder Buffer Get oder anderes Zeug. Dieser Jargon ist spezifisch für Oracle und kann in anderen Teilen der IT eine andere Bedeutung haben).
Wenn die Liste also länger ist und Sie wirklich schlechtes SQL haben, halten die SQL-Anweisungen ihre Latches länger. Durch Erhöhen des Speichers kann gelegentlich die Leistung verringert werden. Meistens wird das nicht passieren. Die Leute werden viel Geld ausgeben und keinen Nutzen sehen. Abgesehen davon gibt es Zeiten, in denen Sie mehr Speicher im Puffercache benötigen, aber Sie müssen den Engpass richtig identifizieren, um zu wissen, ob dies angemessen ist. Ich kann nicht diskutieren, wie man das in diesem Beitrag analysiert. Siehe die DBA-Foren. Einige Leute diskutieren es dort. Es ist ziemlich komplex.
Hat jemand spezielle Beispiele für andere Software, bei denen dies passieren kann? Es gibt ein großartiges Geschäftsbuch mit dem Titel "The Goal", in dem es darum geht, Einschränkungen in einer Fabrik zu beseitigen. Dieser Prozess ähnelt stark der Vorgehensweise von Oracle-Datenbankadministratoren bei der Bewertung von Leistungsproblemen. In MBA-Programmen ist es oft Standard. Es ist sehr wertvoll, für IT-Berufe zu lesen.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt