Vor knapp zwei Wochen hatte ich die MySQL New Features Serie mit dem Thema Semisynchronous Replication gestartet. Als eines der Features, welches auch ohne tief gehendes Verständnis der Datenbankarchitektur in vielen Umgebungen Verwendung finden kann, bereits eine echte Bereicherung.
Gerade unter der Haube im Bereich der Storage-Engines und vor allem InnoDB ist viel passiert. In den letzten Jahren musste sich MySQL immer wieder den Vorwurf gefallen lassen, aktuelle Hardware nicht ausreichend auszulasten und gerade im SMP-Bereich hinter alternativen Datenbank zurückzufallen. Einem besonderen Kritikpunkt hat sich SUN/Oracle ebenfalls in der Version 5.5 angenommen.
Gemeint sind hier die so genannten Background I/O Threads, welche für die Verarbeitung von Prefetches und dem Schreiben von Dirty Pages verantwortlich sind. Für das Prefetching kennt MySQL grundsätzlich zwei Entscheidungsregeln. Einmal das Vorablesen von Blöcken bei Identifizierung eines sequentiellen Lesevorgangs oder der überdurchschnittlicher Leserate in bestimmten Speicherblöcken und somit vorsorglicher Leseverarbeitung der beteiligten Blöcke. In den bisherigen MySQL-Versionen gab es hierfür genau einen Thread, der aktuelle Serverhardware und vorallem Speichersubsysteme nicht wirklich vollständig auslasten konnte. Hierfür gibt es seit Version 5.5 nun den Parameter innodb_read_io_threads, der eine dynamische Konfiguration der Read-Threads und somit optimierte Auslastung des Plattensubsystems ermöglicht.
In die andere Richtung, nämlich dem Schreiben von veränderten Datenblöcken aus dem Buffer-Cache auf die Disk ist ebenfalls die Möglichkeit zum Feintuning, hier innodb_write_io_threads entstanden. Bei modernen RAID-Controllern wird das Tuning der read_io_threads vermutlich den größeren Erfolg versprechen, da Schreibvorgänge häufig schon im Cache der Controller acknowledged und somit als abgeschlossen markiert werden.
Beide Parameter bedürfen im Praxisbetrieb genauer Beobachtung und können bei Überstrapazierung auch zu steigendem I/O-Waits auf den Disks führen. Wie immer bei Tuning gilt auch hier der Grundsatz nicht alle Schrauben gleichzeitig zu drehen, sondern verschiedene Kombinationen über die Zeit zu nutzen und die gewonnenen Ergebnisse zu dokumentieren und vergleichen.
Alle User in MySQL anzeigen
Oftmals wachsen Datenbankinstallationen im Laufe der Zeit und man legt immer wieder für neue Projekte neue Datenbanknutzer an. Um hier den Überblick zu behalten, zeige ich kurz, wie man sich die jeweiligen Nutzer anzeigen lassen kann. Voraussetzungen: Command...
0 Kommentare
Trackbacks/Pingbacks