Назад | Перейти на главную страницу

Каков самый быстрый способ оптимизировать таблицу MySQL?

Я выполнил много разных запросов DELETE для множества таблиц в огромной базе данных (сотни миллионов записей). Что было бы быстрее - запускать OPTIMIZE TABLE для каждой измененной таблицы. Или просто запустить mysqldump в файл, а затем восстановить из файла?

Думаю, что это будет равно. Просто mysqldump | mysql будет быстрее;)

OPTIMISE TABLE будет быстрее, так как данные не нужно будет преобразовывать в текстовый формат, используемый mysqldump а затем переваривается mysql клиент командной строки.

Если вы используете InnoDB тогда вы можете сделать еще один трюк,

ALTER TABLE $table ENGINE innodb;

При этом таблица будет перестроена путем копирования всех строк в новое табличное пространство и замены текущей таблицы после завершения. Однако пока это происходит, исходная таблица не будет блокировать считыватели. Писатели, конечно, будут заблокированы от обновления до завершения операции.