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.

Free Cloud Server Trial von IONOS

Jetzt Cloud Server kostenlos testen - Probieren Sie Ihren Cloud Server bei IONOS 30 Tage lang aus!

REST API
Unlimited Traffic
VMware Virtualisierung
Hinweis

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