Optimale MySQL-Konfiguration (my.cnf)
Folgende ist mein Standard-Produktion MySQL-Konfigurationsdatei (my.cnf
) für einen reinen UTF-8-setup mit InnoDB als Standard-storage-engine.
[server]
bind-address=127.0.0.1
innodb_file_per_table
default-character-set=utf8
default-storage-engine=innodb
Das setup führt folgende Schritte aus:
- Bindet an localhost:3306 (loopback) anstelle des Standard -*: 3306 (alle Schnittstellen). Getan, um die Sicherheit zu erhöhen.
- Legt einen Tablespace pro Tabelle. Getan zur Erhöhung der Wartungsfreundlichkeit.
- Setzt den Standard-Zeichensatz auf UTF-8. Getan ermöglicht die einfache Internationalisierung standardmäßig.
- Setzt die default storage engine auf InnoDB. Geschehen zu ermöglichen, row-level-locking standardmäßig.
davon Ausgehen, dass Sie noch weiter verbessern könnten das setup durch hinzufügen von maximal drei (3) Konfigurations-Parameter. Was würden Sie hinzufügen, und warum?
Eine Verbesserung würde in diesem Zusammenhang bedeuten, entweder eine Performancesteigerung, eine Verbesserung der Zuverlässigkeit oder Benutzerfreundlichkeit/ease-of-Wartbarkeit zu erhöhen. Sie können davon ausgehen, dass der Rechner, auf dem die MySQL-Instanz werden über 1000 MB RAM.
- Zumindest mit MySQL 5.5, ändern Sie ggf. den default-character-set -> character_set_server
Du musst angemeldet sein, um einen Kommentar abzugeben.
Cache-Daten mehr:
Wenn Sie schreiben, viele Daten:
zu vermeiden, zu viel Protokoll-switching.
Es gibt keine Dritte würde ich hinzufügen, auf jeden Fall, alle anderen abhängen.
Zuweisung von mehr Speicher als der Standard von 8M auf InnoDB (mit innodb_buffer_pool_size) ist sicherlich eine Verbesserung. In Bezug auf den Wert, auf einen dedizierten Datenbankserver, wie Ihre, können Sie es einrichten, um die 80% von deinem RAM und der höher Sie diesen Wert einstellen, desto weniger Interaktionen mit der Festplatte. Nur meinen Senf dazu geben, möchte ich erwähnen, dass einige performance-boost optimieren der Wert
innodb_flush_log_at_trx_commit
jedoch Einbußen bei der SÄURE-compliance... Nach dem MySQL-Handbuch:Könnte man damit Locker einige Daten, die nicht geschrieben wurden, korrekt in der Datenbank durch einen Absturz oder eine Fehlfunktion. Wieder nach dem MySQL-Handbuch:
So, ich würde vorschlagen:
Schließlich, wenn Sie haben eine hohe Verbindungsrate (d.h. wenn Sie brauchen, um zu konfigurieren, MySQL-Unterstützung einer web-Anwendung auf die Datenbank zugreift), dann sollten Sie überlegen, die Erhöhung der maximalen Anzahl der verbindungen zu so etwas wie 500. Aber da dieses etwas mehr oder weniger trivial und bekannt sind, so möchte ich betonen, auf die Bedeutung der
back_log
zu gewährleisten Konnektivität.Ich hoffe, diese Informationen helfen Ihnen bei der Optimierung Ihrer Datenbank-server.
Erhöhen Sie die innodb-Puffer-pool-Größe, so groß, wie Sie können praktisch machen:
Werden Sie auch einige wichtige Puffer für temporäre Tabellen:
Andere würde davon abhängen, was Sie tun, mit der Datenbank, sondern table_cache oder query_cache_size wäre ein paar andere Möglichkeiten.
key_buffer_size
relevant fürMyISAM
nur?