Я все еще изучаю основы OLAP, кубов и SSAS, но упираюсь в барьер производительности и не уверен, что понимаю, что происходит.
Итак, у меня есть простой куб, который определяет два простых измерения (тип и площадь), третью иерархию измерения времени (год->квартал->месяц->день->час->10 минут) и одну меру (сумма в поле под названием Count). База данных отслеживает события: когда они происходят, какого типа, где произошли. Таблица фактов представляет собой предварительно рассчитанную сводку событий для каждого 10-минутного интервала.
Итак, я настроил свой куб и использую браузер для одновременного просмотра всех своих атрибутов: общее количество для каждой области по типу с течением времени, с детализацией от года до 10-минутного интервала. Отчеты аналогичны по производительности обзору.
По большей части это достаточно быстро. Но по мере того, как я углубляюсь в дерево сверления, просмотр каждого уровня занимает больше времени. Наконец, на минутном уровне кажется, что требуется около 20 минут, прежде чем он отобразит всего 6 записей. Но потом я понял, что могу просматривать другие детализированные данные минутного уровня без ожидания, так что кажется, что куб вычисляет всю таблицу в этот момент, поэтому это занимает так много времени.
Я не понимаю. Я ожидаю, что переход к кварталам или годам займет больше всего времени, поскольку он должен собрать все данные. Переход к самой низкой метрике, сильно отфильтрованной примерно до 180 ячеек (6 интервалов, 10 типов, 3 области), кажется, должен быть самым быстрым. Почему куб обрабатывает весь набор данных, а не только видимое его подмножество? Почему высший уровень агрегации такой быстрый, а самый низкий уровень такой медленный?
Самое главное, могу ли я что-нибудь сделать с помощью конфигурации или дизайна, чтобы улучшить его?
Некоторые дополнительные детали, которые, как я только что подумал, могут иметь значение: Это SSAS 2005, работающий на SQL Server 2005, использующий Visual Studio 2005 для проектирования бизнес-аналитики. Куб настроен (по умолчанию) на полный MOLAP, но не разбит на разделы. Таблица фактов содержит 1 838 304 строки, так что это не сумасшедшая корпоративная база данных, но и не простая тестовая база данных. Разделения нет, и все SQL-процессы выполняются на одном сервере, к которому я получаю удаленный доступ со своей рабочей станции.