"Defrgmentierung" von Tabellen

dave_

Erfahrenes Mitglied
Hi

wenn man öfter datensätze aus tabellen löscht, entstehen ja praktisch lücken.

ist vergelichbar mit der fragmentation von vfat partitionen.

mich würde mal interessieren, wie viel das an performance ausmacht, und welche möglichkeiten es gibt, die tabellen zu defragmentieren.

klar, man könnte sich beispielsweise in php oder asp ein script schreiben, was alle datensätze in arrays liest, die tabelle leert und neu schreibt, das wäre aber extrem rechenaufwendig und dafür gibt es leistungsstärkere programmiersprachen.

sind euch irgendwelche tools bekannt, oder bietet da mysql irgendeine lösung?

mich interessiert das einfach, ich arbeite aber nicht mit derart grossen datensätzen :)
 
so wie es weiss brauchst du kein defrag bei mysql
wenn du eine zeile löscht wird beim nächsten einfügen die lücke "genutzt"

dies vorgehen kannst du daran erkennen das die datensätze wild durcheinander ausgegeben werden wenn du keine sortierung
der datensätze machst...

ansonsten gibt es das tool myisamchk
mit option --sort-records= kannst die daten nach einem index sortieren

...
 
Zuletzt bearbeitet:
@melmager: afaik ist das schon ein problem.
ich lese das php-mag (habe zumindest die letzte ausgabe).
in dem artikel über mitfahrgelegenheiten.de wird das als problem beschrieben.

@hottemp: was macht optimize genau? wie gesagt, mich interessiert mehr die therie, in der praxis brauche ichs für meine projekte nicht.
 
Unter http://www.mysql.com/doc/en/OPTIMIZE_TABLE.html gibt es dazu eine genaue Erklärung.

OPTIMIZE TABLE should be used if you have deleted a large part of a table or if you have made many changes to a table with variable-length rows (tables that have VARCHAR, BLOB, or TEXT columns). Deleted records are maintained in a linked list and subsequent INSERT operations reuse old record positions. You can use OPTIMIZE TABLE to reclaim the unused space and to defragment the datafile.

Übrigens sollte dieser Prozess schon bei wenigen hundert geänderten Datensätzen durchlaufen werden. Es werden keine GB's an Datensätzen benötigt.
 
bei PHPMyAdmin gibt es auch eine Funktion zum optimieren von Tabellen. Da wird sogar angezeigt, wieviel Speicherplatz "verschwendet" wird.


Dunsti
 
Wo wird denn da angezeigt wie viel Speicherplatz man verschwendet???

Weiß einer evtl. ein Sniplet, das ich auf meine Seite in den Adminbereich einbauen kann, und das mir auf Knopfdruck die Tabellen Optimiert, und anschließend ausgibt, wie viel ich an Speicherplatz gespart habe? So ähnlich wie dieses Modul in PHP-Nuke???
 

Neue Beiträge

Zurück