Sådan krymper du en Myskl-database
korrekt. Dette er en begrænsning af Innodbs delte tablespace-fil. Det ville være en meget dyr operation for serveren at komprimere den brugte plads i tablespace-filen og krympe filen. Forestil dig, om du har en 100 GB tablespace-fil, og du vil udføre en genopbygning for at komprimere den. Typisk kræver ombygning af bordet, at både Det Gamle og det nye lager findes samtidigt på disken under operationen.
så Innodbs opførsel er at forlade det tomme rum og bruge det til efterfølgende indsættelse af nye rækkeversioner.
se:
Bug # 1287http://bugs.mysql.com/bug.php?id=1287
Bug #1341http://bugs.mysql.com/bug.php?id=1341
en løsning til at krympe en delt InnoDB tablespace er:
1. Backup * alle * InnoDB tabeller med myskldump.
2. Slip alle InnoDB-borde.
3. Slet ibdata1-filen fysisk ved filsystemgrænsefladen.
4. Genstart serveren, som genskaber en ny, lille tablespace-fil.
5. Gendan alle dine InnoDB-tabeller, som udvider tablespace-filen efter behov.
en anden løsning er at bruge indstillingen til at gemme InnoDB-tabeller i en separat fil pr. Se http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html hvis du gør det, skal du kunne bruge Optimer tabel eller ændre tabel på hver InnoDB-tabel, du vil krympe. Dette formodes at genopbygge .ibd-fil for den enkelte tabel.
Hilsen,
Bill K.