MySQL Tabellen optimieren -- Sinn?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Weißt du wie die defragmentieren Funktion in WIndows funktioniert? OPTIMIZE TABLE ist etwas ähnliches.

    Bei einem nicht fragmentieren System werden INSERTs auf der Festplatte immer hintendran geschrieben.
    Wenn du nun einen Datensatz löschst, gibt es eine Lücke - das System fragmentiert.
    Bei den folgenden INSERTS werden also alle Lücken geschlossen. Das sorgt für eine effiziente Platznutzung, aber weil die Lücken erst gefunden werden müssen, dauern die INSERTS mitunter mal ein paar Millisekunden länger.

    Willst du nun 5 Einträge in Folge auslesen, sind das evtl 5 ganz unterschiedliche Festplattenpositionen und die Festplatte muss viel arbeiten - das Lesen ist also ineffizient.

    Allgemein gilt: Beim schnellen Finden der Positionen hilft der MySQL Index.
    Das OPTIMIZE TABLE sortiert dann einerseits die Datendatei (*.MYD), aktualisiert aber auch die INDEX Datei (*.MYI)

    Mehr Informationen findest du auch auf der deutschen Manual Seite: dev.mysql.com/doc/refman/5.1/de/optimize-table.html

    Es gibt Projekte die OPTIMIZE TABLE im Cronjob aufzurufen, jedoch kannst du während ein OPTIMIZE TABLE läuft nichtmehr lesend auf die selbe Tabelle zugreifen. Das solltest du immer beachten.
  • Das kann ich bei mir im Forum gut merken, bei 220 Tabellen hat die Datenbank ganz schön was zu tun und wenn ich sie mal Optimiere, dann merkt man sehr deutlich dass das System viel besser und flüssiger läuft, daher habe ich auch bei mir ein Zeiggesteuerte Aufgabe hier eingerichtet.

    Gruß Gero
    Dieser Beitrag wurde bereits 2000 mal editiert, zuletzt von »Coolman« (24.07.2020, 21:47)

    I go with the time...