Как улучшить производительность INSERT для очень большой таблицы MySQL

Я работаю с большой базой данных MySQL, и мне нужно улучшить производительность INSERT для конкретной таблицы. Этот содержит около 200 миллионов строк и имеет следующую структуру:

(небольшая предпосылка: я не эксперт по базам данных, поэтому коднаписанное может быть основано на неправильных основаниях. Пожалуйста, помогите мне понять мои ошибки :))

CREATE TABLE IF NOT EXISTS items (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(200) NOT NULL,
    key VARCHAR(10) NOT NULL,
    busy TINYINT(1) NOT NULL DEFAULT 1,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,

    PRIMARY KEY (id, name),
    UNIQUE KEY name_key_unique_key (name, key),
    INDEX name_index (name)
) ENGINE=MyISAM
PARTITION BY LINEAR KEY(name)
PARTITIONS 25;

Каждый день я получаю много CSV-файлов, в которых каждая строка состоит из пары "имя, ключ»поэтому я должен проанализировать эти файлы (добавив значения create_at и updated_at для каждой строки) и вставить значения в мою таблицу. В этом, сочетание "название" а также "ключ» ДОЛЖЕН быть УНИКАЛЬНЫМ, поэтому я реализовал процедуру вставки следующим образом:

CREATE TEMPORARY TABLE temp_items (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(200) NOT NULL, 
    key VARCHAR(10) NOT NULL, 
    busy TINYINT(1) NOT NULL DEFAULT 1,  
    created_at DATETIME NOT NULL, 
    updated_at DATETIME NOT NULL,  
    PRIMARY KEY (id) 
    ) 
ENGINE=MyISAM;

LOAD DATA LOCAL INFILE 'file_to_process.csv' 
INTO TABLE temp_items
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '\"' 
(name, key, created_at, updated_at); 

INSERT INTO items (name, key, busy, created_at, updated_at) 
(
    SELECT temp_items.name, temp_items.key, temp_items.busy, temp_items.created_at, temp_items.updated_at 
    FROM temp_items
) 
ON DUPLICATE KEY UPDATE busy=1, updated_at=NOW();

DROP TEMPORARY TABLE temp_items;

Только что показанный код позволяет мне достичь своей цели, но, чтобы завершить выполнение, он занимает около 48 часов, и это проблема. Я думаю, что эта низкая производительность вызвана тем, что скрипт должен проверять очень большую таблицу (200 миллионов строк) и для каждой вставки, что пара "имя, ключ» уникален

Как я могу улучшить производительность моего скрипта?

Спасибо всем заранее.

Ответы на вопрос(4)

Ваш ответ на вопрос