mysql: insert und nachher optimize
kleinerChemiker 01.02.2005 - 09:20 475 2
kleinerChemiker
Here to stay
|
ich hab ein php skript, das wird einmal täglich ausgeführt. es schreibt einiges in eine mysql-db. da das eben nur einmal täglich geschieht und dannach nur noch daraus gelesen wird, dachte ich mir, mach ich dannach ein optimze. denn wenn ich nach dem insert mir die kardinalität vor und nach einem optimize anschaue, stell ich fest, daß daß sie nachher wesentlich kleiner ist. mein problem ist nun, daß ich das optimize zwar ausführe, aber die tabels scheinbar nicht optimiert werden. die kardinalität ist immer noch zu hoch und wenn ich etwas später optimize von hand aus mache (phpmyadmin) dann stimmt die kardinalität wieder. hab mir gedacht, vielleicht braucht mysql zu lange um die daten zu schreiben und deshalb sogar ein sleep(10) eingefügt, bringt aber gar nix. das ist das ende vom skript: mysql_query($query);
sleep(10);
mysql_query('OPTIMIZE TABLE `sphere_account`, `sphere_chars`, `sphere_haeuser`');
?>
was kann ich machen, daß optimize funzt? tia MIK
|
watchout
Legendundead
|
1. das sleep bringt nix, weil die mysql-funktionen auf mysql "warten". dh PHP wird erst weiter ausgeführt wenn der query abgeschlossen ist 2. Wenn du in einer Table NIE etwas löschst oder felder editierst, so wirst du kaum einen optimize benötigen (vielleicht einmal pro Jahr oder so ). 2a. Wenn du in einer FIXED Table Einträge löscht, oder Felder mit FIXER Länge (Alles ausser varchar, blob und text) editierst brauchst du nur SELTEN nen optimize (Vielleicht einmal pro Woche)
|
kleinerChemiker
Here to stay
|
aber warum wird dann mit phpmyadmin vor und nach dem optimize bei den schlüsseln eine unterschiedliche kardinalität angezeigt?
|