Как обрабатывать более 20 миллионов записей из таблиц с одинаковой структурой в MySQL

#mysql #sql #merge #bigdata

#mysql #sql #слияние #bigdata

Вопрос:

Мне нужно обработать 25 миллионов строк данных, которые я собрал и преобразовал примерно из 50 разных источников. Каждый источник приводит примерно к 500.000 — 600.000 строкам. Каждая запись имеет одинаковую структуру, независимо от источника (скажем: id, title, author, release_date)

Для гибкости я бы предпочел создать выделенную таблицу для каждого источника (тогда я могу очистить / удалить данные из источника и перезагрузить / загрузить данные очень быстро (используя LOAD INFILE)). Таким образом, кажется, что очень легко обрезать таблицу без риска удаления строк из других источников.

Но тогда я не знаю, как выбирать записи с одним и тем же автором в разных таблицах и вишенкой на торте, с нумерацией страниц (ключевое слово LIMIT).

Это единственное решение для хранения всего в одной огромной таблице и решения проблем с индексацией / резервным копированием базы данных объемом 25 миллионов или есть какой-то абстрактный уровень для виртуального объединения 50 таблиц в виртуальную.

Вероятно, это обычный вопрос для администратора базы данных, но я пока не смог найти ответа… Любая помощь / идея приветствуется. Спасибо

Комментарии:

1. Похоже, вы описываете разделение

2. То, что вы описываете, — это разделение. Я недостаточно разбираюсь в MySQL, чтобы знать, подходит ли это для вас.

Ответ №1:

Это может быть хорошим местом для разделения MySQL.

Это позволяет вам обрабатывать большой объем данных, одновременно предоставляя вам возможность выполнять операции DML для определенного раздела, когда это необходимо (например truncate , или событие drop ), очень эффективно и не влияя на остальные ваши данные. Выбор разделов также поддерживается в LOAD DATA операторах.

Вы можете запускать запросы по разделам, как с обычной таблицей, или нацеливаться на определенный раздел, когда вам нужно (что может быть сделано очень эффективно).

В вашем конкретном случае использования разделение списка кажется подходящим выбором: у вас есть заранее определенный список источников, поэтому у вас обычно будет один раздел на источник.