Witam serdecznie. Mam dość szczegółowe pytanie dotyczące komendy OPTIMIZE TABLE
wykonywanej na tabeli typu innoDB.

Pytanie 1:

Czy Przeprowadzenie optymalizacji tabel powoduje ze te tablice zostaja zablokowane az optymalizacja sie nie skonczy. Innymi slowy: czy wszelkie operacje zmieniajace zawartosc tabel przez ten czas nie beda po zakonczeniu optymalizacji widoczne (tak jak rollback bez autocommita)? Czyli czy przez ten czas optymalizacji trzeba wylaczyc aplikacje/serwis.

Pytanie 2:
Jak sprawdzic w phpmyadmin lub jakims zapytaniem SQL na jakim etapie jest obecnie optymalizacja, ile jeszcze zostalo do konca. I w ogole - czy jeszcze dziala, czy juz przestala. (mam ograniczony dostep do serwera bo to wykupiony hosting).

Informacje szczegolowe:
Wczoraj wieczorem zauważyłem, że pewien prowadzony przeze mnie serwis zaczął działać niestabilnie - znikały wpisy które były wykonane przed chwilą i tym podobne zagadki. Aby sprawdzić co może być tego przyczyną wszedłem do bazy przez phpmyadmina i co rzuciło mi się w oczy to nadmiar ok. 900MB.

Aby usunac nadmiar, wykonalem kopie zapasowa danych, wylaczylem serwis (a scislej jest teraz jedynie z prawami SELECT, bez mozliwosci zapisu) i rozpoczalem optymalizacje komenda:
OPTIMIZE TABLE tabela1, tabela2, tabela3, ...

Po pewnym czasie nadmiar z 900MB spadl do 890MB, po jeszcze dluzszym do 860 itd.. Proces ten trwa nadal, lecz jego tempo jest tragicznie wolne. Np. 10MB na godzine. Czy tak ma byc?

Probowalem zrzucic inserty i stworzyc nowa baze danych za pomoca tych danych, ale gdy importuje je do nowej bazy to na starcie mam znowu 900MB nadmiaru. Myslalem ze nadmiar tkwi w fizycznym skladowaniu danych, a gdy zrobi sie import od nowa, to on sobie to logicznie uporzadkuje. Jednak jest inaczej i wyglada jakby nadmiar tkwil w samym kodzie sql.


Dla niezorientowanych, chodzi o te komende:
http://dev.mysql.com/doc/refman/5.0/en/optimize-table.html
Szczególnie istotny jest fragment:
"For InnoDB tables, OPTIMIZE TABLE is mapped to ALTER TABLE, which rebuilds the table to update index statistics and free unused space in the clustered index. "

Czym jest nadmiar można dowiedzieć się tutaj:
http://forum.php.pl/index.php?showtopic=18...rt=#entry113647