Was muss ich wissen, bevor ich mit einer InnoDB-Datenbank live gehe?

10

Was sollte ein Server- oder DB-Administrator wissen und tun, bevor er eine InnoDB-Datenbank zur Verfügung stellt?

Ich denke über Dinge wie das Setzen korrekter Werte für innodb_buffer_pool_sizeund nachinnodb_log_file_size

Welche einfachen Dinge könnten Sie vergessen zu konfigurieren, die dazu führen würden, dass die Anwendung, die die Datenbank verwendet, weniger als optimal funktioniert?

Jacco
quelle

Antworten:

14

Es gibt einige Konfigurationsoptionen, die Sie sich überlegen sollten, bevor Sie beginnen.

Solange Sie myisam überhaupt nicht verwenden, können Sie fast allen max_connectionsSpeicher sicher zuweisen (halten Sie genug, damit Ihr Betriebssystem bequem läuft, und genug für Sie ) innodb_buffer_pool. Das Schöne an InnoDB ist, dass fast der gesamte Speicher selbst verwaltet wird, ohne dass Dinge wie Abfragecaches, Schlüsselpuffer usw. getrennt werden müssen.

Ich würde empfehlen, dass Sie aktivieren innodb_file_per_table, einfach weil es viel einfacher ist, nur das Dateisystem zu durchsuchen und zu sehen, wie viel Speicherplatz die verschiedenen Tabellen und Datenbanken benötigen. Sie benötigen weiterhin eine generische ibdata-Datei für den internen Gebrauch von InnoDB, können diese jedoch einfach als definieren 10M:autoextend. Es müssen nicht viele verschiedene Innodb-Datendateien mit vorab zugewiesenen Größen definiert werden.

innodb_log_file_sizeund innodb_log_buffer_sizekombiniert muss größer als das Zehnfache Ihres größten Blob-Objekts sein, wenn Sie viele große Objekte haben. Wenn Sie dies nicht tun (und Sie sollten es nicht tun [ 1 , 2 ]), müssen Sie sich wirklich nicht viel damit beschäftigen. Im MySQL Performance Blog finden Sie einen detaillierten Bericht zur Berechnung.

Und wenn Sie MySQL eine Weile ausgeführt haben, überprüfen Sie Ihre Einstellungen mit MySQLTuner oder MySQL Tuning Primer .

Versuchen Sie für einen detaillierteren Bericht mysqlreport und für die Live-Überwachung mytop .

Nils-Anders Nøttseter
quelle
Bei innodb_file_per_table ist zu beachten, dass die Methoden zur Wiederherstellung des Speicherplatzes unterschiedlich sind. Mit ibdata-Dateien können Sie Speicherplatz im Tabellenbereich wiederherstellen, indem Sie das Ende Ihrer Tabellen löschen. Da der Speicherplatz einzelner Tabellendateien nicht durch Löschen wiederhergestellt wird, muss die Tabelle mit optimierter Tabelle neu erstellt werden, um Speicherplatz an das Dateisystem zurückzugeben. Optimieren sperrt die Tabelle und kann so zu Ausfallzeiten in Ihrer Anwendung führen.
Mtinberg
2

Eine kleine "Überraschung" für mich war, dass innodb standardmäßig eine Datei für alle Datenbanken / Tabellen verwendet. Im Gegensatz zu MyISAM-Tabellen, die ein Verzeichnis pro Datenbank und Dateien pro Tabelle / Tabellenindex verwenden.

Dies kann von Bedeutung sein, wenn Sie die physischen Dateien auf Tabellenbasis verkleinern (Tabelle xxx optimieren).


quelle