2009-08-25 3 views
3

Мне нужно извлечь некоторую информацию управления (MI) из данных, которые обновляются в ночных партиях. Я буду использовать агрегированные функции для генерации MI из таблиц сотен тысяч и, возможно, миллионов строк. Информация будет отображаться на веб-странице.
Критическим фактором здесь является эффективность обработки SQL Server агрегатных функций.
я столкнулся с двумя вариантами для генерации данных:Выполнение агрегатных функций на больших часто изменяющихся наборах данных

  1. Записи хранятся проки/просмотров генерировать информацию из необработанных данных, которые называются каждый раз, когда кто-то обращается к странице
  2. Создать таблицы, которые обновляются ежедневно и действовать как кэш для MI

Каков наилучший подход?

ответ

4

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

Одна вещь, которую вы можете захотеть изучить, поскольку у вас есть SQL Server, является служба Analysis Services. Создавая многомерную базу данных или куб, эти агрегации все происходят автоматически, и вы можете развернуть свои данные и находить их в памяти, чтобы найти числа со скоростью мысли, вместо того, чтобы пытаться писать отчеты, которые фиксируют все эти числа. Проведите 10 минут и watch the intro video, и я думаю, вы получите истинную оценку мощности SSAS.

+0

Спасибо. Посмотрите на Analysis Services. – macleojw

3

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

Однако вы также можете использовать индексированный вид, который при правильном проектировании и использовании в сочетании с подсказкой NO EXPAND может обеспечить значительное увеличение производительности.

SQL 2005 Indexed Views

SQL 2008 Indexed Views

Смежные вопросы