Meine Website hat gelegentlich ziemlich vorhersehbare Verkehrsausbrüche, die den Durchsatz um das 100-fache erhöhen. Zum Beispiel werden wir in einer Fernsehshow vorgestellt, und ich erwarte in der Stunde nach der Show, dass ich mehr als 100 mal mehr Verkehr als normal bekommen werde.Reduzieren Sie die Haltbarkeit in MySQL für die Leistung
Mein Verständnis ist, dass MySQL (InnoDB) in der Regel meine Daten in einer Reihe von verschiedenen Orten hält:
- RAM Puffer
- commitlog
- Binärlog von
- tatsächlichen Tabellen
- Alle die oben genannten Stellen auf meinem DB-Slave
Dies ist zu viel "Dauerhaftigkeit", da ich auf einem EC2-Knoten bin und der größte Teil des Materials über die gleiche Netzwerkleitung geht (Dateisysteme sind an das Netzwerk angeschlossen). Außerdem sind die Laufwerke nur langsam. Die Daten haben keinen hohen Wert und ich würde eher eine kleine Chance von ein paar Minuten Datenverlust nehmen, anstatt eine hohe Wahrscheinlichkeit eines Ausfalls zu haben, wenn die Menge ankommt.
Während dieser Verkehr Bursts würde ich gerne alle diese I/O nur tun, wenn ich es mir leisten kann. Ich möchte nur so viel RAM wie möglich behalten (ich habe einen ordentlichen Stapel RAM verglichen mit der Datengröße, die über eine Stunde berührt wurde). Wenn Puffer knapp werden oder der I/O-Kanal nicht zu stark ausgelastet ist, möchte ich sichergehen, dass die Dinge zum Commit-Log oder Binär-Log geschickt werden, um an den Slave gesendet zu werden. Wenn und nur wenn der I/O-Kanal nicht überlastet ist, würde ich gerne auf die tatsächlichen Tabellen zurückschreiben.
Mit anderen Worten, ich möchte, dass MySQL/InnoDB einen "Write Back" -Cache-Algorithmus anstelle eines "Write-Through" -Cache-Algorithmus verwendet. Kann ich es davon überzeugen?
Wenn dies nicht möglich ist, interessiere ich mich für allgemeine MySQL Tipps zur Optimierung der Schreibleistung. Bei den meisten Dokumenten geht es um die Optimierung der Leseperformance. Wenn ich jedoch eine große Anzahl von Benutzern erhalte, erstelle ich für alle Konten Accounts.
Danke. Ich werde mit denen herumspielen. –