MySQL:: Re: hur man krymper en MySQL-databas
korrekt. Detta är en begränsning av InnoDB delade tabellutrymme fil. Det skulle vara en mycket dyr operation för MySQL-servern att komprimera det använda utrymmet i tablespace-filen och krympa filen. Tänk om du har en 100 GB tabellutrymme fil, och du vill utföra en ombyggnad för att komprimera den. Vanligtvis kräver MySQL-tabelluppbyggnader både den gamla och den nya lagringen att existera samtidigt på disken under operationen.
så Innodbs beteende är att lämna det tomma utrymmet och använda det för efterföljande införande av nya radversioner.
se:
fel # 1287 http://bugs.mysql.com/bug.php?id=1287
fel #1341 http://bugs.mysql.com/bug.php?id=1341
en lösning för att krympa ett delat InnoDB-bordrum är:
1. Backup * alla * InnoDB tabeller med mysqldump.
2. Släpp alla InnoDB-tabellerna.
3. Ta bort ibdata1-filen fysiskt i filsystemgränssnittet.
4. Starta om MySQL Server, som återskapar en ny, liten tablespace-fil.
5. Återställ alla dina InnoDB-tabeller, vilket utvidgar tablespace-filen efter behov.
en annan lösning är att använda alternativet för att lagra InnoDB-tabeller i en separat fil per tabell. Se http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html om du gör det borde du kunna använda Optimera tabell eller ändra tabell på varje InnoDB-tabell som du vill krympa. Detta är tänkt att återuppbygga .ibd-fil för den enskilda tabellen.
Hälsningar,
Bill K.