Website-Suche

15 nützliche Tipps zur Leistungsoptimierung und -optimierung von MySQL/MariaDB


MySQL ist ein leistungsstarkes Open-Source-Relationales Datenbankverwaltungssystem oder kurz RDBMS. Es wurde bereits 1995 veröffentlicht (20 Jahre alt). Es verwendet die Structured Query Language, die wahrscheinlich die beliebteste Wahl für die Verwaltung von Inhalten innerhalb einer Datenbank ist. Die neueste MySQL-Version ist 5.6.25 und wurde am 29. Mai 2015 veröffentlicht.

Eine interessante Tatsache über MySQL ist die Tatsache, dass der Name von Michael Widenius (dem Erfinder von MySQL) My. Obwohl es viele interessante Fakten über MySQL gibt, soll dieser Artikel Ihnen einige nützliche Vorgehensweisen zeigen, die Ihnen bei der Verwaltung Ihres MySQL-Servers helfen.

Im April 2009 wurde das MySQL-Projekt von Oracle gekauft. Als Ergebnis wurde ein MySQL-Community-Fork namens MariaDB erstellt. Der Hauptgrund für die Erstellung des Forks bestand darin, das Projekt unter der General Public License frei zu halten.

Heutzutage sind MySQL und MariaDB eines der am häufigsten (wenn nicht sogar das am häufigsten) verwendeten RDBMS für Webanwendungen wie WordPress, Joomla, Magento und andere.

Dieser Artikel zeigt Ihnen einige grundlegende, aber nützliche Tipps zur Optimierung und Feinabstimmung der Leistung von MySQL/MariaDB. Bitte beachten Sie, dass in diesem Artikel davon ausgegangen wird, dass Sie MySQL oder MariaDB bereits installiert haben. Wenn Sie sich immer noch fragen, wie Sie sie auf Ihrem System installieren, können Sie hier unseren ausführlichen Anleitungen folgen:

  1. Installation von LAMP unter RHEL/CentOS 7
  2. LAMP auf Fedora 22 installieren
  3. LAMP unter Ubuntu 15.04 einrichten
  4. MariaDB unter Debian 8 installieren
  5. Installieren Sie MariaDB unter Gentoo Linux
  6. Installieren Sie MariaDB unter Arch Linux

Wichtig: Bevor wir beginnen – akzeptieren Sie diese Vorschläge nicht blind. Jedes MySQL-Setup ist einzigartig und erfordert zusätzliche Überlegungen, bevor Änderungen vorgenommen werden.

Dinge, die Sie wissen müssen:

  1. Die MySQL/MariaDB-Konfigurationsdatei befindet sich in /etc/my.cnf. Jedes Mal, wenn Sie diese Datei ändern, müssen Sie den MySQL-Dienst neu starten, damit die neuen Änderungen wirksam werden.
  2. Für das Schreiben dieses Artikels wurde MySQL Version 5.6 als Vorlage verwendet.

1. Aktivieren Sie InnoDB Datei pro Tabelle

Zunächst ist es wichtig zu erklären, dass es sich bei InnoDB um eine Speicher-Engine handelt. MySQL und MariaDB verwenden InnoDB als Standardspeicher-Engine. In der Vergangenheit speicherte MySQL Datenbanktabellen und Indizes in einem Systemtabellenbereich. Dieser Ansatz war für Server gedacht, deren einziger Zweck die Datenbankverarbeitung ist und deren Speicherplatte nicht für andere Zwecke verwendet wird.

Die InnoDB bietet einen flexibleren Ansatz und alle Datenbankinformationen werden in einer .ibd-Datendatei gespeichert. Jede .ibd-Datei stellt einen eigenen Tablespace dar. Auf diese Weise können Datenbankoperationen wie „TRUNCATE“ schneller abgeschlossen werden und Sie können auch ungenutzten Speicherplatz zurückgewinnen, wenn Sie eine Datenbanktabelle löschen oder kürzen.

Ein weiterer Vorteil dieser Konfiguration besteht darin, dass Sie einige der Datenbanktabellen auf einem separaten Speichergerät aufbewahren können. Dies kann die I/O-Last auf Ihren Festplatten erheblich verbessern.

innodb_file_per_table ist in MySQL 5.6 und höher standardmäßig aktiviert. Sie können das in der Datei /etc/my.cnf sehen. Die Direktive sieht so aus:

innodb_file_per_table=1

2. Speichern Sie MySQL-Datenbankdaten auf einer separaten Partition

Hinweis: Dieses Setup funktioniert nur mit MySQL, nicht jedoch mit MariaDB.

Manchmal können Lese-/Schreibvorgänge des Betriebssystems die Leistung Ihres MySQL-Servers verlangsamen, insbesondere wenn er sich auf derselben Festplatte befindet. Stattdessen würde ich die Verwendung einer separaten Festplatte (vorzugsweise SSD) für den MySQL-Dienst empfehlen.

Um dies abzuschließen, müssen Sie das neue Laufwerk an Ihren Computer/Server anschließen. Für die Zwecke dieses Artikels gehe ich davon aus, dass sich das Laufwerk unter /dev/sdb befindet.

Der nächste Schritt besteht darin, das neue Laufwerk vorzubereiten:

fdisk /dev/sdb

Drücken Sie nun „n“, um eine neue Partition zu erstellen. Drücken Sie anschließend „p“, um die neue Partition zur Primärpartition zu machen. Stellen Sie anschließend die Partitionsnummer von 1-4 ein. Anschließend wählen Sie die Partitionsgröße aus. Drücken Sie hier die Eingabetaste. Im nächsten Schritt müssen Sie die Größe der Partition konfigurieren.

Wenn Sie die gesamte Festplatte verwenden möchten, drücken Sie erneut die Eingabetaste. Andernfalls können Sie die Größe der neuen Partition manuell festlegen. Wenn Sie fertig sind, drücken Sie „w“, um die Änderungen zu schreiben. Jetzt müssen wir ein Dateisystem für unsere neue Partition erstellen. Das geht ganz einfach mit:

mkfs.ext4 /dev/sdb1

Jetzt werden wir unsere neue Partition in einem Ordner mounten. Ich habe meinen Ordner „ssd“ genannt und im Stammverzeichnis erstellt:

mkdir /ssd/

Wir sind bereit, die neue Partition, die wir gerade erstellt haben, im neuen Ordner bereitzustellen:

mount /dev/sdb1  /ssd/

Sie können die Bereitstellung beim Start durchführen, indem Sie die folgende Zeile zur Datei /etc/fstab hinzufügen.

/dev/sdb1 /ssd ext3 defaults 0 0

Jetzt können Sie MySQL auf die neue Festplatte verschieben. Stoppen Sie zunächst den MySQL-Dienst mit:

service mysqld stop

Ich würde Ihnen empfehlen, auch Apache/nginx zu stoppen, um Schreibversuche in den Datenbanken zu verhindern:

service httpd stop
service nginx stop

Kopieren Sie nun das gesamte MySQL-Verzeichnis in das neue Laufwerk:

cp /var/lib/mysql /ssd/ -Rp

Dies kann je nach Standort Ihrer MySQL-Datenbanken eine Weile dauern. Sobald dieser Vorgang abgeschlossen ist, benennen Sie das MySQL-Verzeichnis um:

mv /var/lib/mysql /var/lib/mysql-backup

Als nächstes erstellen wir einen Symlink.

ln -s /ssd/mysql /var/lib/mysql

Jetzt können Sie Ihren MySQL- und Webdienst starten:

service mysqld start
service httpd start
service nginx start

Zu diesem Zeitpunkt wird über das neue Laufwerk auf Ihre MySQL-Datenbanken zugegriffen.