Ich habe in my.ini geschaut und verschiedene Standardeinstellungen gesehen. Meine Datenbank läuft auf einem einzelnen eigenständigen PC. Ich möchte die Leistung von InnoDB und MySQL im Allgemeinen für die Leistung optimieren. Es gibt keine Einschränkung des Speicherplatzes. Welche Standardeinstellungen sollte ich ändern, um eine bessere Leistung, Zuverlässigkeit und mögliche Backups zu einem bestimmten Zeitpunkt zu erzielen [Hochverfügbarkeit].
Bearbeitet
Derzeit wird Folgendes angezeigt, wenn ich "Tabellen optimieren" über die Wartung in MySQL Administrator ausführe:
Die Tabelle unterstützt keine Optimierung. Stattdessen wird neu erstellt und analysiert
auf allen Tischen. Alle meine Tabellen sind InnoDB, aber warum unterstützen sie Optimize nicht?
Antworten:
Die Art und Weise, InnoDB zu optimieren, ist zentriert
Hier ist eine Formel, die ich in den letzten 5 Jahren verwendet habe, um den InnoDB- Pufferpool basierend auf dem von InnoDB-Daten und Indexseiten verwendeten Speicherplatz zu berechnen :
Natürlich habe ich eine Funktion des verfügbaren Speichers und des derzeit von InnoDB verwendeten Speicherplatzes angegeben. Verwenden Sie von hier aus nur den gesunden Menschenverstand. Die empfohlene Anzahl aus der obigen Abfrage sollte 75% des installierten Arbeitsspeichers nicht überschreiten !!! Dies ist die einfachste Faustregel für die Dimensionierung des InnoDB-Pufferpools.
Sie sollten innodb_flush_method auch auf O_DIRECT setzen, da dadurch stabile synchrone Schreibvorgänge für InnoDB bereitgestellt werden. Ich habe auch einen Beitrag darüber geschrieben, wie der Festplattenspeicher für InnoDB optimiert werden kann .
In Bezug auf die Meldungstabelle wird die Optimierung nicht unterstützt. Stattdessen wird neu erstellt + analysiert . Der Grund, warum Sie diese Fehlermeldung erhalten, ist die Tatsache, dass die Speicher-Engine InnoDB ist. Mechanisch kopiert OPTIMIZE TABLE die Tabelle einfach in eine temporäre Tabelle und führt ANALYZE TABLE aus .
In Wirklichkeit ist ANALYZE TABLE gegen InnoDB völlig nutzlos. Selbst wenn Sie ANALYZE TABLE für eine InnoDB-Tabelle ausgeführt haben, führt die InnoDB-Speicher-Engine immer wieder Tauchgänge in den Index für Kardinalitätsnäherungen durch, wodurch die soeben kompilierten Statistiken verworfen werden. Tatsächlich führte Percona einige Tests an ANALYZE TABLE durch und kam ebenfalls zu dem gleichen Ergebnis .
Hier sind andere Beiträge, die ich im Laufe des Jahres über InnoDB Tuning gemacht habe
quelle
Hier ist ein älterer Artikel über die wichtigen Variablen für die Grobabstimmung. Das wichtigste ist wahrscheinlich
innodb_buffer_pool_size
Ich würde ein Upgrade auf MySQL 5.5 sehr empfehlen (falls Sie es noch nicht ausführen). Sie haben einige Änderungen an der InnoDB-Leistung vorgenommen. Sie bieten sogar einen Mainstream-Abschnitt zur Optimierung für InnoDB, da dies die Standard-Engine ist: http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb.html
Bei Backups zu bestimmten Zeitpunkten sollten Sie sich das Binärprotokoll ansehen . Die Grundlagen, um dies zu aktivieren, bestehen darin, die
log-bin
Variable in Ihrer my.cnf festzulegenquelle
Optimieren gibt es in vielen Farben.
Ich denke, Ihr erster Schritt sollte darin bestehen, zu entscheiden, was "optimieren" für Sie bedeutet. Für einige Leute bedeutet dies "schnellste SELECT-Abfragen". Für andere bedeutet dies "beste Balance zwischen SELECT-Leistung und INSERT-Leistung". Für noch andere "schnellste INSERT-Leistung".
Sie müssen entscheiden, welche Kriterien Sie haben und wie Sie feststellen, ob Ihre Änderungen hilfreich sind, bevor Sie mit der Optimierung beginnen.
Stellen Sie dann Ihre Konfigurationsdateien und Startoptionen unter Versionskontrolle und beginnen Sie zu experimentieren. Dokumentieren Sie, wessen Rat Sie folgen und wo Sie ihn gefunden haben. (Der Rat ändert sich im Laufe der Zeit, wenn sich die Codebasis und die Hardware ändern.) Stellen Sie auch diese Dokumente unter Versionskontrolle.
quelle