Ich habe einen Artikel über die Leistungsoptimierung von Innodb gelesen und in diesem Beitrag erwähnte der Autor wiederholt etwas, das als "Batterie-Backup-Cache" bezeichnet wurde. Es ist mir nicht klar, wovon er sprach und Google hat auch nicht geholfen. Ich vermute, dass dies eine Art Backup-Speicher ist, falls es zu einem Stromausfall kommt. Habe ich recht?
8
Antworten:
RAID-Arrays verwenden einen batteriegepufferten Cache, sodass sie Daten schneller verarbeiten als schreiben können. Ohne den Akku könnten sie kein Caching durchführen, ohne das Risiko eines Datenverlusts während eines Stromausfalls.
Dies ist die einzige Instanz, die ich mir vorstellen kann, wo Sie einen Cache benötigen, der speziell batteriegepuffert ist . Wenn es flüchtigen Speicher unterstützen würde, wäre es egal.
Ich nehme an, ich sollte beachten, dass dies eine Funktion eines professionellen Hardware-RAID-Setups ist und kein Software- oder Consumer-RAID-On-Board-RAID. Die Batterien sind beträchtlich, ungefähr so groß wie eine Altoiddose . Sie neigen dazu, alle 4-5 Jahre schlecht zu werden, was Ihr Caching beendet und Ihrem Backing Store einen Performance-Hit verleiht.
quelle
Die magnetische Speicherung ist langsam, stellen Sie also besser einen Cache davor. Es ist leicht zu erkennen, wie dies das Lesen beschleunigt, aber kann es auch das Schreiben beschleunigen?
Ein geschriebener Cache funktioniert nicht, da er zwar eine Kopie der geschriebenen Daten im Cache aufbewahrt (für nachfolgende Lesevorgänge), den Vorgang jedoch erst dann als erfolgreich bestätigt, wenn er sich im realen Speicher befindet ("trifft Eisenoxid").
Ein Rückschreib-Cache funktioniert, weil er dem Host signalisiert, dass die Operation beendet ist, sobald er sich im Cache befindet. Es wird etwas später im Hintergrund in den permanenten (magnetischen) Speicher geschrieben.
Rückschreibcaches klingen zunächst besser, führen jedoch ein Schwachstellenfenster ein: Bei einem Stromausfall gehen alle bestätigten, aber noch nicht geschriebenen Daten verloren. Die Dateisysteme oder Datenbanken können dies nicht verhindern, da Journale, Scheduler-Barrieren, Operationsreihenfolgen usw. von der Schreibbestätigung abhängen, um zu bedeuten, dass Daten bereits sicher geschrieben sind.
Die Lösung besteht darin, dem Cache eine kleine Batterie hinzuzufügen, damit dieser einen Stromausfall überstehen kann. Sobald die Stromversorgung wiederhergestellt ist, werden alle ausstehenden Schreibvorgänge abgeschlossen (noch bevor der Host gestartet wird).
Jetzt gibt es auch zwei andere Alternativen:
Ersetzen Sie den RAM-Cache durch nichtflüchtigen Speicher. SSDs können bei gleichen Kosten viel größer sein, sind aber nicht so schnell wie RAM. In vielen Fällen sind sie jedoch schneller als die Datenverbindung, sodass sie schnell genug sein können.
Fügen Sie dem Cache einen kleinen nichtflüchtigen Speicher hinzu. Im Falle eines Stromausfalls lässt eine sehr kleine Batterie (oder ein Superkondensator) gerade genug zusätzliche Zeit, um die anstehenden Cache-Einträge zum Flashen zu speichern. Sie müssen den RAM nicht für unbestimmte Zeit am Leben halten.
quelle
Caching wird verwendet, um Vorgänge zu beschleunigen. Ein typisches Verwendungsmuster für einen Benutzer besteht darin, mehrmals auf denselben Datensatz zuzugreifen. Lesen Sie es, überprüfen Sie es, erhalten Sie einige Details dazu usw. Wenn das zugrunde liegende System den Datensatz auch nur kurz im Speicher behält, ist der Zugriff beim nächsten Versuch des Benutzers, mit dem Datensatz zu interagieren, tausende Male schneller als beim Laden wieder Festplatte.
Das Problem tritt auf, wenn Ingenieure die gute Idee haben, zur Verbesserung der Systemleistung Dinge, die der Benutzer dem Datensatz hinzugefügt hat, für eine Weile in den Speicher zu stellen. Die Daten werden erst auf die Festplatte geschrieben, wenn der Cache geleert ist. Dies kann einige Sekunden oder vielleicht zehn Sekunden dauern. Da der Cache jedoch klein ist und viele Änderungen nicht passen, besteht die Möglichkeit, dass einige Änderungen auf die Festplatte geschrieben werden , während andere kurz im Schreibcache bleiben . Wenn der Strom ausfällt, während dies in der Schwebe ist, können die Ergebnisse für die Integrität eines Datei- oder Datenbanksystems verheerend sein.
Einige Systeme implementieren daher ein logisches Schutzschema in Software, indem sie Änderungen datieren oder zwischengespeicherte Änderungen oder alle möglichen leicht verrückten Dinge protokollieren. Wenn Sie jedoch einen batteriegepufferten Schreibcache haben, können Sie auf diese Dinge verzichten und sicher wissen, dass der Schreibcache immer durchgeschrieben wird .
quelle