как выполнить оптимизацию таблицы для InnoDB

number1215

Новичок
как выполнить оптимизацию таблицы для InnoDB

скриптом выполняется глобальная "чистка" таблиц в БД, после это по-хорошему нужно выполнить оптимизацию ... раньше я делал это SQL-командой OPTIMIZE TABLE ... но сейчас работаю с таблицами типа InnoDB, а на них эта команда не действует (На данный момент команда OPTIMIZE TABLE работает только с таблицами MyISAM и BDB).

Есть идеи как выполнить оптимизацию таблиц? желательно из скрипта, а не через шелл :confused:
 

alpine

Новичок
number1215
Где-то в коментах встречал такой метод:
для уже существующай таблицы InnoDB произносишь "ALTER TABLE `table` TYPE=innodb" и о чудо размер таблицы уменьшается ...
PS Не знаю наскоько это правда и безопасно.
 

ForJest

- свежая кровь
Создаёшь новую таблицу, копируешь туда данные, переименовываешь - думаю так сработает :).
Вообще я так понимаю что не оптимизируется она потому что там хранятся версии и всякое такое, хотя я могу ошибаться.
 

Апельсин

Оранжевое создание
ALTER TABLE как уже сказал alpine, или OPTIMIZE в более поздних версиях (он делает то же самое что и ALTER TABLE). Это если тебе нужна дефрагментация определенной таблицы.
Если же под "чисткой" понимает еще и уменьшение tablespace, то только делать дамп, удалять tablespace, а потом заливать таблицы обратно (это если не используется опция innodb_file_per_table).
 
Сверху