MySQL/MariaDB-Leistung auf einem Linux-Server optimieren
MySQL/MariaDB ist eine robuste, leistungsstarke und beliebte Datenbank. Ohne Feinabstimmung kann es jedoch ineffizient bei der Nutzung von Serverressourcen sein. Erfahren Sie, wie Sie die Leistung von MySQL/MariaDB optimieren können, um die Reaktionszeit der Datenbank zu verbessern und den Server-Overhead zu minimieren.
Anforderungen
- Ein Cloud Server unter Linux.
- MySQL 5.7 oder MariaDB 5.5 installiert und läuft.
Dank Startguthaben testen Sie Cloud Server bei IONOS 1 Monat lang kostenlos (oder bis das Guthaben verbraucht ist) und erleben die perfekte Kombination aus Leistung und Sicherheit!
MySQL/MariaDB ist standardmäßig auf einer Standard-Linux-Installation installiert und läuft dort. Wenn Ihr Server mit einer minimalen Installation erstellt wurde, müssen Sie MySQL/MariaDB installieren und konfigurieren, bevor Sie fortfahren können.
MySQL/MariaDB-Abfragen optimieren
Ein Teil des Prozesses zur Optimierung von MySQL/MariaDB auf bessere Leistung ist die Überprüfung auf langsame oder ineffiziente Abfragen. Eine schlecht strukturierte MySQL/MariaDB-Abfrage kann die gesamte Datenbank verlangsamen.
MySQL/MariaDB kann konfiguriert werden, um jede Abfrage zu protokollieren, die länger als die angegebene Anzahl von Sekunden dauert. Auf diese Weise können Sie alle langsamen Anfragen verfolgen und bei Bedarf korrigieren.
Um die Protokollierung langsamer Abfragen zu aktivieren, melden Sie sich bei MySQL/MariaDB an:
mysql -u root -p
Geben Sie den folgenden Befehl ein, um die Protokollierung zu aktivieren:
SET GLOBAL slow_query_log = 'ON';
Der voreingestellte Schwellenwert beträgt 10 Sekunden. Verwenden Sie den folgenden Befehl, um die Protokollierung für jede Abfrage zu aktivieren, die länger als 1 Sekunde dauert:
SET GLOBAL long_query_time = 1;
Abfragen, die länger als 1 Sekunde dauern, werden unter /var/lib/mysql/hostname-slow.log protokolliert.
InnoDB-Werte anpassen
Es gibt drei InnoDB-Einstellungen, die angepasst werden können, um die Leistung von MySQL 5.7 und MariaDB 5.5 zu verbessern. Weitere Informationen zu jeder dieser Einstellungen finden Sie unter die offizielle MySQL-Dokumentation.
innodb_buffer_pool_size
Dies sollte ein Wert zwischen 50% und 75% des gesamten RAM des Servers sein. Sie sollte gleich oder kleiner als die Größe der Datenbank sein.
innodb_flush_log_at_trx_commit
Diese Einstellung bietet einen erheblichen Kompromiss zwischen Leistung und Zuverlässigkeit. Wenn auf 0 gesetzt, wird die Datenbankleistung stark erhöht. Allerdings können bis zu 1 Sekunde der Transaktionen bei einem Crash verloren gehen.
Der Standardwert für diese Einstellung ist 1, dieser Wert ist für die vollständige ACID-Konformität erforderlich. Wenn die Einhaltung von ACID eine Anforderung für Ihr Projekt ist, ändern Sie den Wert für innodb_flush_log_at_trx_commit nicht.
innodb_flush_method
Setzen Sie dies auf O_DIRECT, um eine doppelte Pufferung der Daten zu vermeiden.
Hinzufügen der neuen InnoDB-Einstellungen
Um die InnoDB-Einstellungen zu ändern, öffnen Sie die Datei my.cnf zur Bearbeitung:
- CentOS 7: sudo nano /etc/my.cnf
- Ubuntu 16.04: sudo nano /etc/mysql/mysql/my.cnf
Nur CentOS 7: Lassen Sie die erste Zeile der Datei ([mysqld]) intakt. Platzieren Sie Konfigurationen unter dieser Linie.
Nur Ubuntu 16.04: Füge den folgenden Inhalt zum Anfang der Datei hinzu. Stellen Sie sicher, dass Sie[mysqld] als erste Zeile eingeben.
Füge die neuen Konfigurationen hinzu, eine pro Zeile. Zum Beispiel:
[mysqld]
innodb_buffer_pool_size = 500M
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
Speichern und beenden Sie die Datei. Starten Sie MySQL/MariaDB neu, damit die Änderungen wirksam werden:
- CentOS 7: sudo systemctl Neustart mariadb
- Ubuntu 16.04: sudo systemctl Neustart mysql