Frage

Ich lese über eine große langsame SQL-Abfrage über hier Refactoring und die aktuellen höchste Antwort ist von Mitch Weizen, wer will sicherstellen, dass die Abfrage-Indizes für die wichtigsten wählt verwendet und erwähnt:

  

Das erste, was ich tun würde, ist zu überprüfen, um sicherzustellen, gibt es eine aktive Indexpflege Job regelmäßig ausgeführt werden. Wenn nicht, erhalten alle bestehenden indexs wieder aufgebaut oder nicht, wenn möglich, zumindest erhalten Statistiken aktualisiert.

Ich bin nur Amateur DBA bin, und ich habe ein paar Programme freier gemacht, die im Grunde Java Desktop-Clients sind und gelegentlich ein MySQL-Backend. Wenn ich das System einrichten, ich weiß, einen Index für die Spalten zu erstellen, die von abgefragt werden, gibt es eine varchar CaseID und ein varchar CustName.

Allerdings stelle ich dieses System bis Monaten und den Client beließ es arbeitet, und ich glaube, die Indizes sollten wachsen als Daten eingegeben werden und ich glaube, alles noch gut funktioniert. Ich mache mir Sorgen, aber, dass die Indizes sollten in regelmäßigen Abständen neu aufgebaut werden, denn heute habe ich gelesen, dass es ein ‚aktiver Instandhaltungsauftrag‘ sein. Die Wartung Job, den ich auf der Sache eingestellt war ein nächtliches Backup.

Ich wollte die Gemeinde über eine regelmäßige Wartung stellen, die eine Datenbank erfordern. Ist es notwendig, Indizes neu zu erstellen? Kann ich das MySQL-Backend vertrauen gehen so lange zu halten, wie niemand es vermasselt und die Daten bleiben unter einigen Gigabyte?

War es hilfreich?

Lösung

Es gibt keine Notwendigkeit, ‚Wiederaufbau‘ einen Index. Sie sind immer auf dem neuesten Stand gehalten. Vielleicht bezog er sich auf den Tisch wieder aufzubauen. Je nach Ihrem Nutzungsmuster und das Schema können Sie fragmentierte Seiten in InnoDB bekommen, und ich denke, auch in MyISAM. die Tabelle neu aufbauen kann die Leistung verbessern, indem der Fragmentierung der Daten auf der Festplatte loszuwerden. Ich weiß nicht MyISAM-Tabellen verwenden regelmäßig, aber ich glaube, es wird empfohlen, ‚OPTIMIZE TABLE‘ mit bestimmten Nutzungsmuster auszuführen. Sehen Sie sich die MySQL-Dokumentation auf OPTIMIZE TABLE für einige gute Infos sowohl auf MyISAM und InnoDB.

Ich bin nicht so mit MyISAM Feinheiten vertraut, aber mit InnoDB es ist wahr, dass Statistiken veraltet bekommen. Die Datenbank hält geschätzte Statistiken darüber, wie Sie Ihre Daten für einen bestimmten Index verteilt wird, und es ist möglich für diejenigen, out-of-date zu bekommen, aber MySQL / InnoDB hat einige in der Funktionalität gebaut, um zu versuchen Statistiken aktuell zu halten. Sie in der Regel müssen nicht darum kümmern.

Also, wenn Sie InnoDB verwenden, ist die Antwort nein, Sie in der Regel brauchen nicht aktiv etwas zu tun, Ihre Indizes zu halten gute Leistung. Ich bin nicht so sicher, mit MyISAM, ich denke, es ist häufiger diese Tabellen regelmäßig müssen optimiert werden.

Andere Tipps

Es ist normalerweise eine gute Idee, einen Cronjob einzurichten, um Indizes zu optimieren und auf Fehler prüfen.

Siehe mysqlcheck . Ein typischer Cron-Job sieht so etwas wie mysqlcheck -Aaos, die alle Tabellen in allen Datenbanken auf Fehler überprüft, optimiert Indizes und Ausgänge nur bei einem Fehler.

Die Antwort, die Sie über „regelmäßige Wartung“ verknüpft war im spezifischen Kontext einer temporären Tabelle, die regelmäßig abgeschnitten und neu besiedelt wird. Sie brauchen nicht diese an die überwiegende Mehrheit der zu tun, MySQL-Datenbank installiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top