1

Мне нужно разбить несколько таблиц по диапазону дат. Должен ли я удалить основной или перезагрузить полные данные, чтобы иметь возможность разбивать эти таблицы?Должен ли я удалить первичный ключ или перезагрузить данные таблицы для разбиения на разделы в MySQL InnoDB?

Некоторые из таблиц содержат более 50 миллионов строк.

alter table temp_table_test1 
partition by range (unix_timestamp(created_at)) 
(
    partition p01 values less than (unix_timestamp('2015-02-01')), 
    partition p02 values less than (unix_timestamp('2015-02-01')), 
    partition p03 values less than (unix_timestamp('2015-02-01')), 
    partition p04 values less than (unix_timestamp('2015-02-01')), 
    partition p02 values less than (maxvalue) 
); 

Это сценарий, который я использую.

ответ

1

Вам не нужно ничего делать, если у вас еще нет разделов. По this thread это будет сделано автоматически:

вы можете использовать ALTER TABLE для добавления секционирования таблицы, имейте в виде, хотя, что это будет на самом деле создать новую разделенную таблицу , а затем скопировать все существующие данных и, наконец, отбросить старую таблицу . Таким образом, эта операция может занять некоторое время и будет временно использовать два раза больше дискового пространства (которое в случае InnoDB является не возвращается к операционной системе ...)

+0

собирался опубликовать ответ на этот вопрос. Понял! – MontyPython