Я наткнулся на этот вопрос, ища что-то еще, и хотел указать двигатель хранения MERGE (http://dev.mysql.com/doc/refman/5.7/en/merge-storage-engine.html).
Хранилище MERGE является более или менее простым указателем на несколько таблиц и может быть переделано за считанные секунды. Для велосипедных журналов это может быть очень мощным! Вот что я сделал бы:
Создайте один стол в день, используйте LOAD DATA, как указано в OP, чтобы заполнить его. Как только это будет сделано, отбросьте таблицу MERGE и заново создайте ее, включая эту новую таблицу, в то время как она станет самой старой. После этого я могу удалить/архивировать старую таблицу. Это позволит мне быстро запросить конкретный день или все, что и как таблицы orignal, так и MERGE.
CREATE TABLE logs_day_46 LIKE logs_day_45 ENGINE=MyISAM;
DROP TABLE IF EXISTS logs;
CREATE TABLE logs LIKE logs_day_46 ENGINE=MERGE UNION=(logs_day_2,[...],logs_day_46);
DROP TABLE logs_day_1;
Обратите внимание, что таблица MERGE не то же самое, как PARTIONNED один и некоторые преимущества и inconvenients.Но помните, что если вы пытаетесь агрегировать из всех таблиц, это будет медленнее, чем если бы все данные находились только в одной таблице (то же самое верно для разделов, поскольку они в основном представляют собой разные таблицы под капотом). Если вы собираетесь запрашивать в основном в определенные дни, вам нужно будет выбрать таблицу самостоятельно, но если разделы будут выполняться в значениях дня, MySQL автоматически захватит правильную таблицу (таблицы), которая может быть быстрее и проще писать.
redis не поддерживает специальные SQL-запросы, а Cassandra переполнена для 20-30 миллионов строк и нестабильна. – James
Очевидно, что это не SQL-движки. Я не притворяюсь иначе. Redis может сделать довольно некоторый анализ, но это не то же самое наверняка. Я бы не рекомендовал Кассандру, если у вас нет денег, чтобы иметь множество узлов. Последний бит моего ответа пытался решить MySQL. – Seldaek