Я использую 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.