Annahme eines Produktions-OLTP-Systems mit überwiegend InnoDB-Tabellen
- Was sind die häufigsten Symptome eines falsch konfigurierten Systems?
- Welche Konfigurationsparameter ändern Sie am häufigsten von ihren Standardeinstellungen?
- Wie können Sie mögliche Engpässe erkennen, bevor es ein Problem gibt?
- Wie erkennen und beheben Sie aktive Probleme?
Anekdoten, die spezifische status
Variablen und Diagnosen beschreiben, sind willkommen.
mysql
performance
innodb
Riedsio
quelle
quelle
Antworten:
Hier ist ein guter Artikel über InnoDB-Optimierung von Suns Jenny Chen - sie bloggt viel über MySQL, einige davon sind Solaris-spezifisch (z. B. mit DTrace ), aber der gesamte Blog steckt voller interessanter Leckerbissen.
quelle
Interessanterweise können Sie in MySQL 5.5 jetzt mehrere innodb-Pufferpools haben.
Die Parameter, die Sie interessieren, sind
In ungefähr einem Monat soll ich 112 Innodb-Pufferpools für einen Client implementieren. Ich werde dich wissen lassen, wie es gelaufen ist.
UPDATE 2011-02-27 21:57 EDT
Ich habe herausgefunden, dass der maximale Wert für innodb_buffer_pool_instances 64 ist. Ich habe mich entschieden, 144 GB zu konfigurieren. Daher habe ich innodb_buffer_pool_instances auf 18 und innodb_buffer_pool_size auf 8 gesetzt. Ich lade derzeit den Server mit 450 GB
UPDATE 2011-04-28 13:44 EDT
Ich habe mehrere InnoDB Buffer Pools ausprobiert. Es gab zu viel Threading Locking und Streit. Ich habe auf einen einzigen 162-GB-Pufferpool umgestellt und read_io_threads und write_io_threads auf 64 (Maximalwert) gesetzt. Das hat viel besser funktioniert.
UPDATE 2012-07-03 17:27 EDT
Ich habe etwas Erstaunliches über MySQL gelernt. Wenn Sie einen einzelnen monolithischen InnoDB-Pufferpool zuweisen, der größer ist als die installierte Gesamtmenge geteilt durch die Anzahl der physischen CPUs , wird das Betriebssystem aufgrund eines vollständigen InnoDB-Pufferpools zu einem regelmäßigen Speicheraustausch veranlasst. Die als innodb_buffer_pool_instances bekannte Option von MySQL 5.5 kann verwendet werden, um den Pufferpool aufzuteilen. Gestern habe ich dies für den Kunden, den ich letztes Jahr in meiner Antwort erwähnt habe, richtig implementiert. Ich habe noch 162 GB für den Buffer Pool des Kunden. Ich habe die Option innodb_buffer_pool_instances des Servers auf 2 gesetzt, da jeder DB-Server dual hexacore ist. Ich wollte es auf 12 setzen, aber dann zeigte mir ein Kollege einen Blog von Jeremy Cole über MySQL und Swappiness. Nachdem ich es gelesen habe, setze ich es sofort für meinen Klienten in die Praxis um. Ich habe diesen Befehl ausgeführt
Ich sah eine Zuordnung von 192 GB Server-RAM als 96 GB für jeden physischen Kern. Daher habe ich die innodb_buffer_pool_instances auf 2 gesetzt. Im Moment sieht es gut aus. Ich werde meine Antwort aktualisieren, um zu sehen, wie sich dies auf den Speicheraustausch für die nächsten 2 Monate auswirkt.
quelle
Möglicherweise möchten Sie die folgenden Ressourcen erkunden:
quelle
Erhöhen Sie zunächst die Standardgröße des InnoDB-Pufferpools in my.cnf (meiner Meinung nach standardmäßig 8 MB).
Sie sollten dies wahrscheinlich auf 75% Ihrer RAM-Größe einstellen (im Allgemeinen)
quelle
Speicherkonfiguration
quelle