Каков наилучший способ создания сводных записей из подробных записей с MySQL? - PullRequest
0 голосов
/ 08 января 2012

У меня может быть от 10 до 20 миллионов подробных записей, поступающих в день (статистические данные и данные о производительности), которые необходимо прочитать и объединить в 24-часовые и 1 ежедневные сводные записи.

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

Лучше ли:

A) суммировать подробные записи в сводные записи, когда записи поступают, слегка задерживая вставку каждой подробной записи? Я предполагаю, что в сводных таблицах будет много блокировок (выберите для обновлений и т. Д.), Поскольку существует несколько разных систем, импортирующих данные.

B) дождаться окончания часа, а затем выбрать все данные за предыдущие часы и создать сводные записи? Пользователи будут задерживаться для просмотра статистики, однако подробные записи будут доступны в течение времени.

Возможно, есть альтернативные методы для этого?

Ответы [ 2 ]

1 голос
/ 08 января 2012

Просто сделайте view для сводных таблиц. Ваша вся вставка будет работать как обычно. Просто сделайте взгляды в соответствии с вашими потребностями в качестве резюме. Это автоматически обновится с основными таблицами.

Также вы можете составить 24-часовую и 1-дневную сводную базу. Представления - это хранимые запросы, которые при вызове создают набор результатов Представление действует как виртуальная таблица.

Подробнее о просмотрах см .: http://dev.mysql.com/doc/refman/5.0/en/create-view.html

Дайте мне знать, если вам нужна дополнительная помощь по поводу mysql views.

0 голосов
/ 08 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...