Я пытаюсь разделить несколько больших таблиц InnoDB в MariaDB 10.3. Вставка данных в эти таблицы занимает несколько часов для каждой таблицы. Это кажется слишком медленным.
Эти таблицы были изначально созданы в MySQL 5.5 и недавно обновлены до MariaDB 10.3. При этом процессе обновления не было сообщений об ошибках или предупреждениях.
Таблицы содержат в среднем около 24 миллионов строк с около 600 МБ данных на таблицу.
Разделение этих таблиц выполнялось следующим образом:
- Создайте пустую копию целевой таблицы, разделенной по диапазону (в столбце datetime) с двумя разделами, один для хранения данных старше определенной даты, и будущий столбец, разделенный для хранения данных меньше MAXVALUE.
- Создайте 100 еженедельных разделов в этой пустой таблице.
Вставить данные в эту таблицу с помощью оператора выбора:
INSERT INTO new_table SELECT * from originalTable;
Используемая версия MariaDB - 10.3.9
Глобальные переменные являются значениями по умолчанию, за исключением:
autocommit = OFF
global_max_allowed_packet = 1073741824
innodb_buffer_pool_size = 10737418240
innodb_doublewrite = OFF
Это работает на CentOS версии 7.2.1511 с 65 ГБ памяти и 40 ядрами 3G.
Я читал в Интернете, что импорт 300Mb занимает несколько минут, но я даже не могу приблизиться к этой скорости. Моя работа кажется, что-то ужасно неправильно, но я не могу определить проблему. Любые идеи о том, как я могу ускорить это, очень ценятся?