Как эффективно создавать сводные таблицы

В течение месяца процесс вставляет большое количество строк в некоторые таблицы базы данных ~1M.
Это происходит ежедневно, и весь процесс длится ~40 минут. Это хорошо.
Я создал несколько "сводных таблиц" из этих вставок, чтобы быстро запрашивать данные. Это отлично работает.

Проблема: я продолжаю вставлять данные в сводные таблицы, и поэтому время создания таблицы кеша соответствует процессу вставки фактических данных, и это хорошо. Но если данные, введенные в предыдущие дни, изменились (из-за каких-либо обновлений), то мне нужно было бы "пересчитать" предыдущие дни и решить эту проблему, а не создавать ежедневные сводные данные ежедневно, мне нужно было бы изменить свой процесс, чтобы воссоздать сводку данные с начала каждого месяца, которые будут означать, что мое время работы значительно увеличится.
Есть ли стандартный способ решения этой проблемы?

1 ответ

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

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

Это можно сделать с помощью TRIGGERс, но поскольку операции находятся в одном месте, мы просто делаем это вручную в TRANSACTION,

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

Я понимаю, что это может быть неприменимо / неосуществимо для вашей ситуации.

Другие вопросы по тегам