2015-08-18 3 views
1

У меня есть большая таблица MyISAM с 3 миллионами строк размером 31 ГБ из-за 10 КБ в каждой строке. В таблице уже 30 разделов. Я хочу оптимизировать таблицу, так как я собираюсь удалить строки с некоторыми старыми данными и изменить размер капли. Мой вопрос касается использования диска при оптимизации:Использование диска для оптимизации многораздельного MySQL-таблицы

Если я выполняю оптимизацию всей таблицы, выполняет ли MySQL разделы по разделам и оптимизирует только один partionen за один раз и, следовательно, требуется только дополнительное пространство одного небольшого partion? Или мне нужно оптимизировать несколько или несколько разделов, чтобы не создавать столько дополнительного дискового пространства при оптимизации.

+0

Возможно, [это] (http://dba.stackexchange.com/questions/82532/mysql-optimize-table-for-partitions) даст вам ответ, краткое объяснение; есть команда __separate__ для оптимизации 'partition', поэтому, возможно, вопиющая' optimize table' зарезервирует место для всей таблицы, а не для раздела – ankhzet

ответ

1

Оптимизация только раздела с размером ~ 1 ГБ занимает всего лишь несколько секунд, и я не вижу никакого использования жесткого диска.

0

(Мой ответ предполагает InnoDB. Даже если я слишком пессимистично, то «решение» должно работать нормально для MyISAM.)

Для InnoDB, имейте в виду вопросы о innodb_file_per_table.

OPTIMIZE построит копию всей таблицы.

Решение: Если вы плотно на пространстве, вы можете оптимизировать один раздел в то время, делая

ALTER TABLE REORGANIZE PARTITION ... 
       (INTO PARTITION ... ); 

Да, вам нужно будет построить ... для одного раздела в то время, и выполнить их одну вовремя.

(Не делайте OPTIMIZE PARTITION, что позволит оптимизировать всю таблицу.)

Вы хотели бы остановиться на то, что ваш стол как? Возможно, я захочу поговорить с вами из раздела или поговорить с вами по-другому.

Смежные вопросы