MySQL:: Re: Jak zmniejszyc baze MySQL
Jest to ograniczenie współdzielonego pliku tablespace InnoDB. Byłoby to bardzo kosztowną operacją dla serwera MySQL, aby skompresować używane miejsce w pliku tablespace i zmniejszyć plik. Wyobraź sobie, że masz plik o pojemności 100 GB i chcesz go odbudować, aby go skompaktować. Zazwyczaj przebudowa tabeli MySQL wymaga jednoczesnego istnienia zarówno starej, jak i nowej pamięci na dysku podczas operacji.
tak więc zachowanie InnoDB polega na pozostawieniu pustej przestrzeni i wykorzystaniu jej do późniejszego wstawiania nowych wersji wiersza.
Zobacz:
Bug #1287 http://bugs.mysql.com/bug.php?id=1287
Bug #1341 http://bugs.mysql.com/bug.php?id=1341
jednym z rozwiązań zmniejszania wspólnej przestrzeni InnoDB jest:
1. Kopia zapasowa * wszystkich * tabel InnoDB z mysqldump.
2. Rzuć wszystkie stoliki InnoDB.
3. Fizycznie usuń plik ibdata1 w interfejsie systemu plików.
4. Uruchom ponownie serwer MySQL, który odtwarza nowy, mały plik tablespace.
5. Przywróć wszystkie tabele InnoDB, które w razie potrzeby rozszerzają plik tablespace.
innym rozwiązaniem jest użycie opcji przechowywania tabel InnoDB w osobnym pliku dla każdej tabeli. Zobacz http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html jeśli to zrobisz, powinieneś być w stanie użyć OPTIMIZE TABLE lub ALTER TABLE na każdej tabeli InnoDB, którą chcesz zmniejszyć. To ma odbudować .plik ibd dla poszczególnych tabel.
Pozdrawiam,
Bill K.