Обновление *:
Посмотрев на мой скрипт на Python, я обнаружил, что подготовка и вычисление данных перед вставкой записей - это самое большое время обработки, а не вставка в БД. Вставки на самом деле относительно быстрые (около 30 секунд для 10 000 записей с размером таблицы 1 000 000 записей). Однако я думаю, что отзывы, которые я получил по этому вопросу, также помогут мне оптимизировать вставки. Спасибо всем, кто ответил. Теперь я собираюсь попытаться оптимизировать мой скрипт на Python, чтобы ускорить его.
В настоящее время у меня есть таблица MariaDB со следующей структурой:
CREATE TABLE IF NOT EXISTS `adeck_errors` (
`StormID` varchar(8) NOT NULL DEFAULT '1',
`ModelBaseTime` datetime NOT NULL,
`Model` varchar(4) NOT NULL,
`Tau` smallint(4) NOT NULL,
`LatCARQ` float DEFAULT NULL,
`LonCARQ` float DEFAULT NULL,
`LatModel` float DEFAULT NULL,
`LonModel` float DEFAULT NULL,
`DistError` smallint(6) DEFAULT NULL,
`WindCARQ` int(11) DEFAULT NULL,
`WindModel` int(11) DEFAULT NULL,
`WindError` smallint(6) DEFAULT NULL,
`PresCARQ` int(11) DEFAULT NULL,
`PresModel` int(11) DEFAULT NULL,
`PresError` smallint(6) DEFAULT NULL,
UNIQUE KEY `StormID` (`StormID`,`ModelBaseTime`,`Model`,`Tau`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Как вы можете видеть, мой уникальный ключ находится в четырех полях таблицы, чтобы я не получил повторяющихся записей. Когда я вставляю более 10 000 записей в таблицу, которая уже содержит 1 миллион записей, это занимает около 15-20 минут, и я хотел бы ускорить этот процесс.
Мой вопрос: лучше ли было бы создать хэш данных в 4 полях и использовать этот хэш в качестве первичного ключа, чтобы у меня не было дубликатов? Когда я обрабатываю данные перед вставкой (с помощью Python), я могу быстро создать хеш-значение из 4 фрагментов данных, прежде чем перейти к функции вставки в БД.
Спасибо за ваши предложения.
Bryan