Как оптимизировать вставку данных в таблицу с 2млн строк?

Оптимизация вставки данных в таблицу с 2 миллионами строк в MySQL может быть выполнена с помощью нескольких методов. Вот некоторые из них:

1. Использование "bulk" вставок: Вместо вставки строк по одной вы можете использовать оператор INSERT INTO ... VALUES, чтобы вставить несколько строк за один запрос. Например:

INSERT INTO table_name (column1, column2) VALUES
  (value1, value2),
  (value1, value2),
  (value1, value2),
  ...

2. Использование подготовленных выражений: Подготовленные выражения позволяют один раз подготовить SQL выражение и использовать его множество раз с разными значениями. Это уменьшает накладные расходы на подготовку и оптимизирует вставку данных. Например:

PREPARE statement FROM 'INSERT INTO table_name (column1, column2) VALUES (?, ?)';
SET @value1 = 'value1';
SET @value2 = 'value2';
EXECUTE statement USING @value1, @value2;
UNPREPARE statement;

3. Отключение и включение индексов: Если у вас есть индексы на таблице, то вы можете временно отключить их перед вставкой данных и включить их снова после вставки. Это может значительно увеличить скорость вставки. Например:

ALTER TABLE table_name DISABLE KEYS;
-- Вставить данные
ALTER TABLE table_name ENABLE KEYS;

4. Увеличение размера буфера записей: В MySQL есть параметр innodb_write_io_threads, который управляет количеством потоков, одновременно записывающих данные на диск. Увеличение значения этого параметра может увеличить скорость вставки данных.

SET GLOBAL innodb_write_io_threads = <number_of_threads>;

5. Разделение вставки на пакеты: Вместо вставки всех 2 миллионов строк за один раз, вы можете разделить их на несколько пакетов. Например, вы можете вставить 1000 строк за раз в цикле. Это может снизить накладные расходы на транзакции и увеличить скорость вставки.

START TRANSACTION;
-- Вставить первый пакет строк
COMMIT;
-- Повторить этот шаг, пока все строки не будут вставлены

6. Использование параллельных подключений: Если у вас есть возможность использовать несколько подключений к базе данных, вы можете попробовать вставлять данные параллельно из разных подключений. Это может увеличить скорость вставки.

Это лишь некоторые из возможных методов оптимизации вставки данных в таблицу с 2 миллионами строк. Выбор подходящего метода зависит от специфических требований и условий вашего проекта.