Angenommen, ein Produktionssystem OLTP System mit überwiegend InnoDB-Tabellen
Alle Anekdoten, die spezifische status
Variablen und Diagnosen beschreiben, sind willkommen.
Interessanterweise können Sie in MySQL 5.5 jetzt mehrere innodb-Pufferpools haben.
Die Parameter, die Sie interessieren, sind
In ungefähr einem Monat werde ich 112 innodb-Pufferpools für einen Client implementieren. Ich werde dich wissen lassen, wie es gelaufen ist.
Ich habe herausgefunden, dass der Maximalwert für innodb_buffer_pool_instances 64 ist. Ich habe mich entschieden, 144 GB zu konfigurieren, also habe ich innodb_buffer_pool_instances auf 18 und innodb_buffer_pool_size auf 8 gesetzt. Ich lade derzeit den Server mit 450 GB
Ich habe mehrere InnoDB-Pufferpools ausprobiert. Es gab zu viele Threading-Sperren und Konflikte. Ich habe auf einen einzelnen Pufferpool mit 162 GB umgestellt und read_io_threads und write_io_threads auf 64 (Maximalwert) gesetzt. Das hat viel besser funktioniert.
Ich habe etwas Erstaunliches über MySQL gelernt. Wenn Sie einen einzelnen monolithischen InnoDB-Pufferpool zuweisen, der größer ist als Insgesamt installiert geteilt durch die Anzahl der physischen CPUs, ist Ihr wird das Betriebssystem aufgrund eines vollständigen InnoDB-Pufferpools zu regelmäßigen Speicherauswechseln anregen. Die als innodb_buffer_pool_instances bekannte Option von MySQL 5.5 kann zum Aufteilen des Pufferpools verwendet werden. Gestern habe ich dies für den Kunden, den ich letztes Jahr in meiner Antwort erwähnt habe, ordnungsgemäß implementiert. Ich habe noch 162 GB für den Pufferpool des Clients. Ich habe die Option innodb_buffer_pool_instances des Servers auf 2 gesetzt, da jeder DB-Server ein dualer Hexacore ist. Ich dachte daran, es auf 12 zu setzen, aber dann zeigte mir ein Kollege ein Blog von Jeremy Cole über MySQL und Swappiness . Nachdem ich es gelesen habe, setze ich es sofort für meinen Kunden in die Praxis um. Ich habe diesen Befehl ausgeführt
numactl --hardware
Ich habe eine Zuordnung von 192 GB Server RAM als 96 GB zu jedem physischen Kern) gesehen. Daher habe ich die innodb_buffer_pool_instances auf 2 gesetzt. Die Dinge sehen jetzt gut aus. Ich werde meine Antwort aktualisieren, um zu sehen, wie dies funktioniert Beeinflusst den Speicheraustausch für die nächsten 2 Monate.
Möglicherweise möchten Sie die folgenden Ressourcen erkunden:
Erhöhen Sie zunächst die Standardgröße des InnoDB-Pufferpools in my.cnf (ich glaube, die Standardeinstellung ist 8 MB).
Sie sollten dies wahrscheinlich auf 75% Ihrer RAM Größe (im Allgemeinen) einstellen.