15 nützliche MySQL/MariaDB-Performance-Tuning- und Optimierungstipps

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

Ein interessanter Fakt über MySQL ist, dass der Name von Michael Widenius (dem Schöpfer von MySQL) Tochter My stammt. Obwohl es viele interessante Fakten über MySQL gibt, soll dieser Artikel Ihnen einige nützliche Praktiken zeigen, um Ihnen bei der Verwaltung Ihres MySQL-Servers zu helfen.

MySQL Performance Tuning

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

Heute sind MySQL und MariaDB eines der am häufigsten (wenn nicht 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, wie Sie die Leistung von MySQL/MariaDB optimieren können. Bitte beachten Sie, dass dieser Artikel davon ausgeht, dass Sie bereits MySQL oder MariaDB installiert haben. Wenn Sie sich immer noch fragen, wie Sie sie auf Ihrem System installieren können, können Sie unseren umfangreichen Anleitungen hier folgen:

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

Wichtig: Bevor wir beginnen – akzeptieren Sie diese Vorschläge nicht blind. Jedes MySQL-Setup ist einzigartig und erfordert zusätzliches Nachdenken, 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 die Erstellung dieses Artikels wurde MySQL-Version 5.6 als Vorlage verwendet.

1. InnoDB-Datei pro Tabelle aktivieren

Zuerst ist es wichtig zu erklären, dass InnoDB ein Speicher-Engine ist. MySQL und MariaDB verwenden InnoDB als Standard-Speicher-Engine. Früher verwendete MySQL Datenbanktabellen und Indizes in einem System-Tablespace. Dieser Ansatz war für Server gedacht, deren einziger Zweck die Datenverarbeitung ist und deren Speicherfestplatte nicht für andere Zwecke verwendet wird.

Der InnoDB bietet einen flexibleren Ansatz, und jede Datenbankinformation wird in einer .ibd-Datei 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 abschneiden.

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

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

innodb_file_per_table=1

2. Speichern von MySQL-Datenbankdaten auf separater Partition

Hinweis: Diese Konfiguration funktioniert nur mit MySQL, nicht jedoch mit MariaDB.

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

Um dies abzuschließen, müssen Sie das neue Laufwerk an Ihren Computer/Server anschließen. Für diesen Artikel gehe ich davon aus, dass das Laufwerk unter /dev/sdb sein wird.

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

# fdisk /dev/sdb

Drücken Sie jetzt „n“, um eine neue Partition zu erstellen. Drücken Sie dann „p“, um die neue Partition als primär festzulegen. Danach setzen Sie die Partitionsnummer von 1-4. 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 bereit sind, drücken Sie „w“, um die Änderungen zu speichern. Jetzt müssen wir ein Dateisystem für unsere neue Partition erstellen. Dies kann einfach mit:

# mkfs.ext4 /dev/sdb1

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

# mkdir /ssd/

Wir sind bereit, die neue Partition, die wir gerade erstellt haben, in den neuen Ordner einzuhängen:

# mount /dev/sdb1  /ssd/

Sie können das Einhängen beim Start durch Hinzufügen der folgenden Zeile in die Datei /etc/fstab durchführen.

/dev/sdb1 /ssd ext3 defaults 0 0

Jetzt sind Sie bereit, MySQL auf die neue Festplatte zu verschieben. Stoppen Sie zuerst den MySQL-Dienst mit:

# service mysqld stop

I would recommend you stopping Apache/nginx as well to prevent any attempts to write in the databases:

# service httpd stop
# service nginx stop

Kopieren Sie jetzt das gesamte MySQL-Verzeichnis auf das neue Laufwerk:

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

Dies kann je nach Größe 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 werden wir einen symbolischen Link erstellen.

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

Jetzt sind Sie bereit, Ihren MySQL- und Webdienst zu starten:

# service mysqld start
# service httpd start
# service nginx start

Zu diesem Zeitpunkt werden Ihre MySQL-Datenbanken von der neuen Festplatte abgerufen.

Source:
https://www.tecmint.com/mysql-mariadb-performance-tuning-and-optimization/