Как ускорить импорт из XML в MySQL?

Хочу ускорить импорт такого дампа с БД, выполненного при помощи mysql.
<resultset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <row>
        <field name="created_at_timestamp">1558316800</field>
        <field name="uid">908391749403340835</field>
        <field name="language">en</field>
        <field name="full_text">Yes but it didn't say</field>
  </row>
  <row>
...


Импортирую в такую схему
CREATE TABLE `discord_messages` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `uid` varchar(40) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
  `created_at_timestamp` int(11) NOT NULL,
  `full_text` text COLLATE utf8mb4_bin,
  `language` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `text_len` int(11) DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uid_index` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;


В клиенте mysql:
LOAD XML CONCURRENT LOCAL INFILE '/tmp/dump-discord.xml' INTO TABLE discord_messages;


Итого, за 6 часов! Процессор молотил прилично.
Query OK, 362934 rows affected (5 hours 58 min 48.856 sec)
Records: 362934  Deleted: 0  Skipped: 0  Warnings: 0

С чем это связано? Со сжатием (сейчас попробую кстати)?

MariaDB 10.3.35

Добавлено
Пробую без сжатия и уникального индекса. Отпишусь позже.
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
- Предположительно, тебе загрузку замедляют 2 индекса по id, uuid. Выключи их. Потом построишь когда загрузишся.
- У тебя - MariaDb. Модная зверюга. Попробуй мнесто InnoDB поставить другой двигатель Aria например.
Ну и проверь там чтоб XML и датафайлы лежали на физически разных дисках во время загрузки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы