Seite 1 von 1
MySql Pflege, wie macht ihrs ?
Verfasst: 05.11.2007, 14:55
von Ice Man
Da meine DB am WE einen kleinen Schluckauf hatte, hab ich mich am WE mal mit der Pflege von SQL DB beschäftig.
Also gegoogelt und viel gelesen.
Wenn man z.B. die PHPMyAdmin aufruft, werden ja Überhänge der einzelnen Tabellen angezeigt. So wie ich es gelesen hab, ist das gleichzusetzen mit Fragmentierung.
Je öfter Einträge gelöscht und hinzugefügt werden, um so größer die Lücken = Überhänge.
Ein Optimize defragmentiert praktisch die DB, und die Überhänge verschwinden. Wenn man also nicht oft genug Optimiert, dann werden die Überhänge so groß, das die Tabelle irgendwann nicht mehr lesbar ist.
Kommt dann dieser schöne Fehler "Can't open file: 'xxxxxxx.MYI'. (errno: 144)"
Dann gehts nur noch per "repair table 'xyz' "
Wie macht ihr das nun, habt ihr einen Cron laufen, der Täglich alle Tabellen optimiert ? Oder macht ihr das Manuell ?
Hattet ihr den Fehler "errno: 144" auch schon ?
Verfasst: 05.11.2007, 15:02
von SISTRIX
Code: Alles auswählen
beus@stats:~$ perror 144
MySQL error code 144: Table is crashed and last repair failed
Das hat mit dieser Fragmentierung rein gar nichts zu tun.
Gruß Johannes
Verfasst: 05.11.2007, 15:09
von Pompom
Wenn man also nicht oft genug Optimiert, dann werden die Überhänge so groß, das die Tabelle irgendwann nicht mehr lesbar ist.
Nein, auch wenn das keine Frage war.
Kommt dann dieser schöne Fehler "Can't open file: 'xxxxxxx.MYI'. (errno: 144)"
Nein, auch wenn das keine Frage war.
Errorno 144 hat nichts mit optimieren o.ä. zu tun, sondern teilt nur mit, dass das Index-File nicht hin haut.
repair table 'xyz' exportiert die Datenbank und baut sie komplett neu auf, auch die Index-Files.
Wenn du öfter mal solche Fehler hast, solltest du mal überprüfen, ob deine Festplatte Wasser lässt oder dein System an die Wand fährt, d.h. zu wenig Festplattenplatz oder Arbeitsspeicher verfügbar hat.
Verfasst: 05.11.2007, 15:09
von auftragslinker
im normalfall sind die freiwerdenden lücken (größe davon ist übrigens die pagesize) immer gleich, ausser du nutzt dynamische felder. wenn also wieder ein datensatz eingefügt wird, wird dieser platz wieder benutzt. den "überhang" gibt es, weil mysql nicht alles sofort auf die festplatte schreibt, sondern sich sachen merkt und die schreibvorgänge optimiert. wenn du z.B. einen datensatz löscht und gleich wieder einfügst, dürfte nichts passieren (ausser halt im hauptspeicher).
brauchst dir also keine gedanken machen, so ein system kann sich alleine "pflegen".
Verfasst: 05.11.2007, 15:45
von Ice Man
@ Pompom
Ist ein Webspache Account von Allinkl.
Ich kann da nix ändern.
@ alle anderen, also brauch ich nicht ständig "optimizen"
Also liegt es nicht an mir, das die Tabelle öfters mal (alle 2-3 Wochen) abschmiert ?
Verfasst: 05.11.2007, 15:47
von SISTRIX
Was heisst "abschmiert"? Fehlermeldung 144 oder was genau?
Gruß Johannes
Verfasst: 05.11.2007, 15:59
von Ice Man
Jo, ist immer die selbe Meldung.
"Can't open file: 'xxxxxxx.MYI'. (errno: 144)"
Tabelle in Benutzung.
Dadurch kann das Script nicht mehr die Daten abfrufen.
Es ist nur ein selbst geschriebener Logger, der nix anderes macht, als die Referer der Besucher mit Datum in eine Tabelle einzutragen.
Also so
1 |
https://www.google.de/?=..... | 2007-11-04
mehr nicht, und alle 3-4 Wochen spinnt dann die Tabelle, und kann nicht mehr gelesen werden.
Immer Tabelle in Benutzung
Verfasst: 05.11.2007, 16:48
von Grillmeister
@Ice Man: Dann solltest du vielleicht den Anbieter wechseln. Oder ihn zumindest mal drauf hinweisen. Wenn du dir mit 50 anderen Kunden den Server teilst, kann es natürlich sein, dass irgendwer den hin und wieder zum abschmieren bringt.
Verfasst: 06.11.2007, 07:39
von auftragslinker
ansonsten kannst du ein INSERT DELAYED benutzen. das entzerrt die stressigen situationen ein bisschen