Назад | Перейти на главную страницу

Импорт больших данных в MySQL (MyISAM)

Я использую 64-битную версию MySQL 5.5 на машине с Windows 7.

Я пытаюсь импортировать некоторые очень большие файлы геопространственных данных с geonames.org в MySQL, чтобы я мог выполнять запросы к нему и генерировать меньший набор данных для своих целей.

Я использую механизм хранения MyISAM, а входные данные - это текстовый файл размером 1 гигабайт, каждая строка которого разделена вкладками. Я считаю, что текстовый файл содержит около 8 миллионов строк.

Первоначально я импортировал файл в базу данных с помощью движка InnoDB. Предупреждений было много, вероятно, из-за геопространственных данных. Импорт занял около 6,5 минут, что было вполне разумно.

Затем я попытался импортировать данные в базу данных с помощью механизма хранения MyISAM. Импорт все еще выполняется, и я потратил более 30 минут на ожидание завершения импорта.

Сервер настроен со штатными настройками "Разработчик". Я заметил, что когда я смотрю на состояние сервера с помощью MySQL Workbench, эффективность ключа составляет 100%, в то время как использование памяти составляет около 40% (у меня на машине 12 ГБ ОЗУ), а загрузка процессора составляет около 5%. Есть ли какие-то особые настройки / хитрости, на которые мне следует обратить внимание, чтобы ускорить импорт?

РЕДАКТИРОВАТЬ: Итак, он только что закончил импорт: есть ли способы ускорить это?

Query OK, 7836651 rows affected, 65535 warnings (50 min 20.89 sec)
Records: 7836651  Deleted: 0  Skipped: 0  Warnings: 5630783

Похоже, что лучше всего использовать InnoDB. Также настройте соответствующие параметры MySQL, чтобы использовать больше ОЗУ, если хотите, и получить более быстрые диски (если ЦП и память не привязаны, тогда диски почти наверняка являются узким местом).

Если бы вы использовали ЗАГРУЗИТЬ ДАННЫЕ В ФАЙЛ, убедитесь, что вы увеличили bulk_insert_buffer_size до чего-то значительного, например, 256M.