MySQL оптимизировать очень большой стол - PullRequest
5 голосов
/ 21 октября 2011

У меня есть таблица MyIsam размером около 15 ГБ.Я удалил из него около половины строк, и запрос на удаление занял около 10 часов.Теперь я боюсь начинать optimize table, потому что я не знаю, сколько это займет времени.Если у вас есть опыт работы с такими большими таблицами, не могли бы вы поделиться со мной.

PS После процесса удаления запрос «выбрать * из предела 0,30 таблицы» занимает годы.Поможет ли optimize table?

Это займет более 10 часов?

Что случится, если я прерву запрос "оптимизировать таблицу"?

1 Ответ

4 голосов
/ 21 октября 2011

Для оптимизации таблицы поможет уменьшить размер (будет пересчитан индекс и т. Д.) Если вы удалили половину строк, вы должны оптимизировать свою таблицу. В моей компании у нас есть таблицы около 2-3 ГБ. Optmize не так много, как удалить.

Если вы хотите, чтобы ваши запросы были быстрее, оптимизируйте свою таблицу.



Еще один совет по удалению множества строк из большой таблицы: Вы можете сделать это без использования какой-либо команды удаления.

Выберите строки, которые не нужно удалять, в пустую таблицу, которая имеет ту же структуру, что и исходная таблица:

ВСТАВИТЬ В t_copy ВЫБРАТЬ * ОТ ГДЕ ...;

Используйте RENAME TABLE для атомарного перемещения оригинальной таблицы и переименования копии в оригинальное имя:

ПЕРЕИМЕНОВАТЬ ТАБЛИЦУ t в t_old, t_copy TO t;

Оставьте исходный стол:

DROP TABLE t_old;

...