Drei Cache-Ebenen zwischen Select und Disk | Mewayz Blog Zum Hauptinhalt springen
Hacker News

Drei Cache-Ebenen zwischen Select und Disk

Drei Cache-Ebenen zwischen Select und Disk Diese Untersuchung befasst sich mit drei Aspekten und untersucht deren Bedeutung und potenzielle Auswirkungen. — Mewayz Business OS.

6 Min. gelesen

Mewayz Team

Editorial Team

Hacker News

Wenn Ihre Anwendung eine SELECT-Anweisung auslöst, berührt diese Abfrage fast nie eine rotierende Festplatte oder sogar einen unformatierten Flash-Speicher – sie durchläuft drei verschiedene Cache-Ebenen, die stillschweigend bestimmen, ob Ihre Antwort in Mikrosekunden oder Millisekunden eintrifft. Das Verständnis dieser Schichten macht den Unterschied zwischen einer Geschäftsplattform, die mühelos skaliert, und einer, die unter realer Belastung nachgibt, aus.

Was passiert in dem Moment, in dem eine SELECT-Abfrage Ihre Anwendung verlässt?

Sobald Ihre Anwendung eine SELECT-Abfrage sendet, gelangt sie in eine Pipeline, die die meisten Entwickler nie überprüfen. Die Datenbank-Engine fängt die Anfrage ab, bevor E/A-Vorgänge stattfinden, parst die SQL in einen internen Ausführungsplan und konsultiert sofort ihre erste Verteidigungslinie: den Abfrageergebnis-Cache. Wenn kürzlich eine identische Abfrage mit identischen Parametern ausgeführt wurde, kann die Engine einen zwischengespeicherten Ergebnissatz zurückgeben, ohne eine einzige Datenseite zu berühren. Dies wird manchmal als Abfrage-Cache oder Ergebnis-Cache bezeichnet und kann bei Workloads mit vielen Lese- und Schreibvorgängen – wie Analyse-Dashboards und Berichtsmodulen – die überwiegende Mehrheit der Festplattenlesevorgänge vollständig eliminieren.

Die entscheidende Erkenntnis hierbei ist, dass der Abfragecache sehr empfindlich auf Datenmutationen reagiert. Jedes INSERT, UPDATE oder DELETE für die zugrunde liegende Tabelle macht relevante zwischengespeicherte Ergebnisse ungültig. Aus diesem Grund deaktivieren schreibintensive Transaktionssysteme häufig den Abfragecache vollständig und verlassen sich stattdessen auf die tieferen Schichten.

Was ist der Pufferpool und warum ist er wichtiger als Sie denken?

Die zweite Cache-Schicht – und wohl die wichtigste in Produktionssystemen – ist der Pufferpool (in PostgreSQL „Shared Buffer“ genannt, in MySQL „InnoDB Buffer Pool“). Dies ist ein RAM-Bereich, den die Datenbank-Engine verwendet, um kürzlich aufgerufene Datenseiten zu speichern. Wenn eine Abfrage nicht aus dem Ergebniscache bedient werden kann, prüft die Engine, ob die erforderlichen Datenseiten bereits im Pufferpool vorhanden sind, bevor ein Festplattenlesevorgang ausgeführt wird.

Der Pufferpool arbeitet nach dem Prinzip der zeitlichen und räumlichen Lokalität: Auf Daten, auf die kürzlich zugegriffen wurde, wird wahrscheinlich erneut zugegriffen, und auf Daten, die in der Nähe gespeicherter Daten gespeichert sind und auf die zugegriffen wurde, wird wahrscheinlich bald zugegriffen. Die Optimierung der Pufferpoolgröße ist für Datenbankadministratoren eine der wichtigsten Konfigurationsentscheidungen, die sie treffen. Ein zu kleiner Pufferpool führt zu einer ständigen Seitenräumung, was zu einem Phänomen namens Thrashing führt, bei dem das System mehr Zeit mit der Verwaltung von Cache-Fehlern als mit der Ausführung von Abfragen verbringt.

Wichtige Erkenntnis: Bei den meisten OLTP-Workloads bedeutet ein gut dimensionierter Pufferpool, dass 95–99 % aller Datenlesevorgänge aus dem RAM erfolgen. Der Arbeitssatz – die Teilmenge Ihrer Daten, die tatsächlich häufig von Abfragen berührt wird – ist häufig weitaus kleiner als die Gesamtgröße der Datenbank. Die Dimensionierung Ihres Pufferpools so, dass er zu Ihrem Arbeitssatz und nicht zu Ihrem gesamten Datensatz passt, ist die Optimierungsmaßnahme mit dem höchsten Ertrag, die Sie ergreifen können.

Wie füllt der Betriebssystem-Cache die Lücke zwischen RAM und Festplatte?

💡 WUSSTEN SIE SCHON?

Mewayz ersetzt 8+ Business-Tools in einer Plattform

CRM · Rechnungsstellung · Personalwesen · Projekte · Buchungen · E-Commerce · POS · Analytik. Für immer kostenloser Tarif verfügbar.

Kostenlos starten →

Selbst wenn der eigene Pufferpool der Datenbank ausfällt, ist eine Abfrage noch nicht für einen echten Festplattenlesevorgang vorgesehen. Das Betriebssystem unterhält einen Seitencache (auch Dateisystemcache genannt), einen Bereich des vom Kernel verwalteten RAM, der Lese- und Schreibvorgänge auf Blockgeräten puffert. Wenn die Datenbank-Engine eine Seite anfordert, die in ihrem Pufferpool fehlt, überprüft der Betriebssystemkernel seinen eigenen Seitencache, bevor er einen physischen E/A-Befehl an den Speichercontroller ausgibt.

Diese dritte Schicht ist für Anwendungsentwickler größtenteils unsichtbar, aber auf Systemen, auf denen der Datenbankpufferpool nicht ausreichend vorhanden ist, von entscheidender Bedeutung. Der Seitencache des Betriebssystems wird von allen Prozessen gemeinsam genutzt und konkurriert daher mit Ihrem Anwendungsserver, Webserver und jeder anderen Software, die auf demselben Host ausgeführt wird. Auf dedizierten Datenbankservern ist dieser Wettbewerb minimal und der Betriebssystem-Cache bietet einen sinnvollen Puffer für die zweite Chance. Auf gemeinsam genutzten Hosts oder Containern mit engen Speicherbeschränkungen ist der Betriebssystem-Cache häufig zu klein, um zu helfen.

Welche Cache-Schicht ist in der Praxis für die meisten Leistungssteigerungen verantwortlich?

In realen Produktionssystemen ist der Pufferpool domi

Streamline Your Business with Mewayz

Mewayz brings 207 business modules into one platform — CRM, invoicing, project management, and more. Join 138,000+ users who simplified their workflow.

Start Free Today →
...

Frequently Asked Questions

Was bedeutet die Drei-Cache-Ebene zwischen der Select-Anweisung und dem Speicher?

Die Drei-Cache-Ebene besteht aus den folgenden Schichten: Query Cache, Index Cache und Physical Disk. Die Query Cache speichert die Ergebnisse von vorherigen SELECT-Anweisungen, die Index Cache enthält die Bäume von Indizes und die Physical Disk verweist auf den tatsächlichen Speicherort der Daten. Diese Schichten ermöglichen es, die Antwort auf eine SELECT-Anweisung sehr schnell zu liefern.

Wie beeinflusst die Query Cache die Geschwindigkeit von SELECT-Anweisungen?

Die Query Cache ist die erste Cache-Ebene, die von einer SELECT-Anweisung durchlaufen wird. Sie speichert die Ergebnisse von vorherigen SELECT-Anweisungen, um die Geschwindigkeit zu verbessern. Durch die Verwendung von Mewayz (208 modules, $49/mo) können Sie die Größe der Query Cache steuern und die Performance Ihrer Anwendung optimieren.

Welche Rolle spielt die Index Cache in der Drei-Cache-Ebene?

Die Index Cache ist die zweite Cache-Ebene, die von einer SELECT-Anweisung durchlaufen wird. Sie enthält die Bäume von Indizes, die von den Tabellen verwendet werden, auf die sich die SELECT-Anweisung bezieht. Durch die Verwendung von Indexen kann die Geschwindigkeit von SELECT-Anweisungen erheblich verbessert werden, da die Daten nicht komplett durchsucht werden müssen.

Wie kann ich die Leistung meiner Anwendung verbessern?

Zum Verbessern der Leistung Ihrer Anwendung können Sie die Größe der Query Cache und die Index Cache von Mewayz (208 modules, $49/mo) anpassen und die Optimierung von Indexen durchführen. Darüber hinaus können Sie auch die Verwendung von Mewayz-Module, wie z.B. den Caching Module, aktivieren, um die Geschwindigkeit von SELECT-Anweisungen zu verbessern.

Mewayz kostenlos testen

All-in-One-Plattform für CRM, Abrechnung, Projekte, HR & mehr. Keine Kreditkarte erforderlich.

Verwandter Leitfaden

HR-Management-Leitfaden →

Verwalten Sie Ihr Team effektiv: Mitarbeiterprofile, Abwesenheitsmanagement, Gehaltsabrechnung und Leistungsbeurteilungen.

Start managing your business smarter today

присоединяйтесь к 6,204+ компаниям. Бесплатный вечный план · Без кредитной карты.

Fanden Sie das nützlich? Teilt es.

Bereit, dies in die Praxis umzusetzen?

Schließen Sie sich 6,204+ Unternehmen an, die Mewayz nutzen. Kostenloser Tarif für immer – keine Kreditkarte erforderlich.

Kostenlose Testversion starten →

Bereit, Maßnahmen zu ergreifen?

Starten Sie Ihre kostenlose Mewayz-Testversion noch heute

All-in-One-Geschäftsplattform. Keine Kreditkarte erforderlich.

Kostenlos starten →

14-day free trial · No credit card · Cancel anytime