Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / kreuz-und-quer / tutorials-info-neuigkeiten-datenbank / mysql-datenbank-tuning.php

MySQL-Datenbank Tuning

Viele Anwendungen nutzen mittlerweile eine Datenbank. Meist ist sie vorinstalliert und man kümmert sich nicht weiter um die Einstellungen. Doch gerade in den DB-Einstellungen liegen oft massive Performance-Einbußen begründet. Dieser Beitrag soll einige hilfreiche Tipps geben, wie man die Einstellungen einer MySQL-Tabelle optimiert.

Erfahrungsgemäß steigt MySQL bei einem Besucheransturm auf eine dynamische Seite als erstes aus. Das liegt daran das ein Großteil
der Installationen die Standard-Konfiguration nicht verändert was u.a. schon die Einschränkung bringt, dass MySQL nur 100 gleichzeitige Verbindungen erlaubt. Und beim 101. macht die Datenbank dann eben dicht.
Die folgenden Tipps sollten einen erheblichen Performance-Schub bringen.

Alle Konfigurationsparameter sind entweder in der /etc/my.cnf in der Sektion [mysqld] einzutragen, z.B.:
[mysqld] set-variable = max_connections=2500 oder als Parameter übergeben z.B.:
safe_mysqld --max_connections=2500 &

Das oben erwähnte Einstellen der max. gleichzetigen Verbindungen ist ein sehr wichtiger Punkt. Oft bemerkt man gar nicht, dass dieses Setting aktiviert ist, wenn man lokal im stillen Kämmerlein eine neue Anwendung mit ein paar Leuten testet. Doch stellt man die Anwendung dann online und es kommen die ersten Besucher, streikt die Datenbank irgendwann – und keiner weiß wieso, weil doch beim Testen alles so schön funktioniert hat.
Wenn man eine stark frequentierte Webseite hat, die bei jedem Aufruf Selects durchführt oder persistente Verbindungen zur
Datenbank verwendet,ist MySQL in der Standard-Konfiguration mit 100 gleichzeitigen Verbindungen schnell am Ende.

MySQL ist in der Lage auch auf schwachen Rechnern viele Verbindungen zu verarbeiten.
Die Variable max_connections sollte mit dem Wert „1000“ bis „2500“ auf einen akzeptablen Wert gebracht werden oder jedoch dem, was Ihre Websiten an gleichzeitigen Benutzern erwarten. Wer sich sicher ist, dass die DB keine Begrenzung braucht, kann auch „0“ einstellen, dann gibt es kein Limit an gleichzeitigen Verbindungen.

Die Parameter key_buffer_size und table_cache sind die wohl wichtigsten performance-bezogenen Variablen. Diese geben an wieviel Speicher MySQL zur Verfügung steht, um Tabellen und Abfrage-Schlüssel zu speichern.
Auf Systemen mit 2 GB-Ram oder mehr und vielen Datenbanken sind folgende Einstellungen zu empfehlen:
key_buffer=128M table_cache=512 sort_buffer=15M

Für Systeme mit moderater RAM-Ausstattung (256 MB – 2 GB) oder wenig Datenbanken sind diese Settings empfehlenswert:
key_buffer=64M table_cache=256 (fuer >= 256MB RAM) oder table_cache=128 (fuer 256MB Ram)
Für diese Systeme reicht auch ein kleiner sort_buffer mit 4 – 8M.

Für Systeme mit 128MB RAM oder weniger sollte man den table_cache nicht einstellen, sondern die Standard-Werte der small.cnf verwenden, jedoch den key_buffer auf 16 oder 32M stellen.