einfache Frage, aber es nervt mich jetzt schon eine Weile ....
Was ist "Overhead" in MySQL und sollte ich mir Sorgen machen?
Behebt das Klicken auf "Tabelle optimieren" das Problem?
einfache Frage, aber es nervt mich jetzt schon eine Weile ....
Was ist "Overhead" in MySQL und sollte ich mir Sorgen machen?
Behebt das Klicken auf "Tabelle optimieren" das Problem?
Antworten:
Es scheint, dass der Overhead temporärer Speicherplatz ist, über den die Datenbank einige der Abfragen ausgeführt hat. Sie sollten sich also nur Sorgen machen, wenn dieser wirklich hoch wird.
Sie können "Tabelle optimieren" mit der Defragmentierung Ihrer Festplatte vergleichen.
Ich zitiere:
Jede Datenbank muss im Laufe der Zeit gewartet werden, um ein optimales Leistungsniveau zu erreichen. Das Löschen gelöschter Zeilen, das erneute Sequenzieren, Komprimieren, Verwalten von Indexpfaden, das Defragmentieren usw. wird in MySQL als OPTIMIERUNG und in anderen Datenbanken als andere Begriffe bezeichnet. IBM DB2 / 400 nennt es beispielsweise REORGANIZE PHYSICAL FILE MEMBER.
Es ist so, als würde man das Öl in seinem Auto wechseln oder eine Einstellung vornehmen. Sie denken vielleicht, dass Sie das wirklich nicht müssen, aber wenn Sie dies tun, läuft Ihr Auto viel besser, Sie erhalten eine bessere Kilometerleistung usw. Ein Auto, das viele Kilometer erreicht, muss häufiger eingestellt werden. Eine Datenbank, die stark genutzt wird, erfordert dasselbe. Wenn Sie viele UPDATE- und / oder DELETE-Operationen ausführen und insbesondere wenn Ihre Tabellen Spalten variabler Länge (VARCHAR, TEXT usw.) enthalten, müssen Sie stets auf dem Laufenden bleiben.
Wenn Sie über die Sache , die reden phpMyAdmin
Anrufe overhead
, dann ist es tatsächliche Größe einer Tabelle Daten - Datei in Bezug auf die idealen Größe der gleichen Daten - Datei (als ob , wenn nur aus einer Sicherung gestellt).
MySQL
Komprimiert aus Leistungsgründen die Datendateien nicht, nachdem Zeilen gelöscht oder aktualisiert wurden.
Dies overhead
ist schlecht für den Tabellenscan. Wenn Ihre Abfrage alle Tabellenwerte durchlaufen muss, muss mehr Leerraum angezeigt werden.
Sie können das overhead
durch Ausführen OPTIMIZE TABLE
entfernen, das Ihre Tabelle und Indizes komprimiert.
Overhead ist Data_free einer Tabelle, dh die Anzahl der zugewiesenen, aber nicht verwendeten Bytes. Wir können es mit dem SQL-Befehl SHOW TABLE STATUS finden . Dies ist der freie Speicherplatz in der zugewiesenen Größe für Ihren Tisch.
Tabelle optimieren kann sehr problematisch sein. Zum Beispiel, wenn die Tabelle auf einer Site häufig verwendet wird.
http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html
Nach dem Löschen eines großen Teils einer MyISAM- oder ARCHIVE-Tabelle oder nach vielen Änderungen an einer MyISAM- oder ARCHIVE-Tabelle mit Zeilen variabler Länge (Tabellen mit VARCHAR-, VARBINARY-, BLOB- oder TEXT-Spalten). Gelöschte Zeilen werden in einer verknüpften Liste verwaltet, und nachfolgende INSERT-Vorgänge verwenden alte Zeilenpositionen wieder. <
Ich glaube, ich habe dieses Verhalten bestätigt. Und es wäre sicherlich sehr nützlich.