Полезно ли использовать LOAD XML
для импорта данных XML в таблицы MySQL? Известны ли проблемы или значительные улучшения производительности в более поздних версиях MySQL (я использую 5.5.34)?MySQL LOAD Производительность импорта XML
Мой текущий пробный запуск с использованием около 50 МБ XML и простых, пустых таблиц InnoDB с одним индексом показывает, что производительность очень плохая - от 3 до 8 записей или 8 КБ в секунду на ноутбуке Core i7 с SSD. Учитывая эту производительность, потребуется около 80 дней для импорта всех моих данных (20 млн. Рядов), тогда как цель составляет около 4-8 часов.
SQL-код выглядит следующим образом:
LOAD XML LOCAL INFILE 'import.xml'
REPLACE INTO TABLE assets ROWS IDENTIFIED BY '<asset>';
Сервер MySQL работает на CentOS 6.3 в VMware Fusion. Все файлы находятся в пределах этой виртуальной машины, поэтому во время импорта во время импорта не используется хост FS.
Ну, я бы предположил, что «более простой» формат, такой как CSV, будет легче анализировать и, следовательно, скорее всего импортировать быстрее. Что касается ваших индексов на таблицах, можете ли вы их удалить и добавить только после импорта? Это также должно ускорить процесс, если вам не нужны индексы во время импорта, чтобы избежать дублирования или проверки внешнего ключа. – CBroe
Какую настройку вы сделали в своей конфигурации MySQL? Конфигурация по умолчанию действительно ужасна. Кроме того, вы сравнили относительную скорость CSV с XML, чтобы узнать, является ли формат проблемой? – tadman
Я не мог получить его быстрее, чем 3 записи, даже с более поздними версиями MySQL и без виртуальной машины. Однако регулярный импорт CSV был очень быстрым: до 2500 записей без какой-либо настройки и с теми же таблицами. Мне нужен индекс, так как мы делаем замену на основе первичного ключа (можете ли вы действительно использовать InnoDB без ПК?). – lastzero