Замена набора данных 1,5 миллиона строк каждые 5 минут

0

У меня есть база данных MySQL с таблицей, заполненной примерно 1,5 миллионами строк данных, которые должны быть полностью обновлены каждые 5 минут. Данные больше не нужны, если они старше 5 минут.

Получение данных в таблицу не проблема... Я могу заполнить ее примерно через 50-70 секунд. Там, где у меня возникают проблемы, выясняется, как переносить все старые данные и заменять их новыми данными. Мне нужно иметь возможность запускать запросы в любое время по всему набору данных. Эти запросы должны выполняться очень быстро, и они должны содержать только данные из одного набора данных за раз (т.е. Запрос не должен вытягивать комбинацию новых и старых данных за 1 минуту, когда таблица обновляется).

У меня нет большого опыта работы с большими временными наборами данных, поэтому я был бы признателен за некоторые советы о том, как лучше всего решить эту проблему.

Теги:

1 ответ

0

Создание разделов. Затем вы можете заполнить один раздел, а запрос пользователей - другим.

Чтобы сделать это вручную, вам просто нужно что-то вроде...

CREATE TABLE tbl0 (blah)
CREATE TABLE tbl1 (blah) 
CREATE TABLE meta (combined_source INT)
INSERT INTO meta VALUES (0)

CREATE VIEW combined AS
  SELECT * FROM tbl0 WHERE 0 = (SELECT combined_source FROM meta) % 2
  UNION ALL
  SELECT * FROM tbl1 WHERE 1 = (SELECT combined_source FROM meta) % 2

Теперь вы можете вставить новые данные в "неактивную" таблицу, и она НЕ появится в представлении.

Затем увеличьте значение в meta. Сразу же представление переключается с отображения данных из одной таблицы для отображения данных из другой таблицы.

На следующей итерации вы просто проверяете meta чтобы определить, какая таблица должна быть пустой, и загружать новые данные.

Одним из преимуществ этого подхода является то, что вам даже не нужно находиться в транзакции.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню