Оптимизация пересчета кубов
Периоды анализа данных кубов
Как правило, период анализа данных кубов и отчетов представляет из себя:
Короткий период (ежедневные/еженедельные/ежемесячные): скорость вычисления таких кубов необходимо сокращать за счет наложения фильтра на период обрабатываемых данных.
Фиксированный прошедший период (прошлый год/квартал/месяц, все данные до какой-либо даты): такие кубы можно вычислить один раз (при каждой смене периода его, конечно, надо вычислить заново).
Правила оптимизации
Ниже перечислены несколько правил, позволяющих оптимизировать вычисление кубов:
Проанализируйте частоту использования Ваших Кубов и соответствующих отчетов: если некоторые кубы и отчеты используются лишь для просмотра/печати отчетов в конце месяца/недели другого периода - выставьте им соответствующую периодичность пересчета. В случае эпизодического использования - выставьте "По Запросу", в случае, если куб и его отчеты не используется совсем - отключите его пересчет, установив периодичность в "Никогда".
В случае, если смены закрываются не одновременно, посмотрите, указан ли час пересчета в каждом кубе, укажите время, например, ночное, когда никто не использует сервер и не идет закрытий смен. Если имеется разброс между временами закрытия смен, (например, на одном сервере смена закрывается в 18.00, а на другом - в 20.00) - либо не устанавливайте периодичность "По Закрытию Смены", либо установите соответствующее значение свойства "Интервал Ожидания Данных" у элемента Сервер Отчетов (в описанном случае следует использовать значение 02:30 - т. е. ожидать данных в течение двух с половиной часов, а лишь затем начать пересчитывать кубы). Это позволит избежать двойного пересчета кубов.
Если у Вас есть необходимость смотреть кубы за конкретный период, а предыдущие периоды просматриваются редко, рекомендуется установить фильтр на интересующую Вас дату для ускорения процесса пересчета. Например, для просмотра кубов с марта 2010 года установите следующий фильтр: 01.03.2010 - 31.12.2100. В случае, если Вас интересуют лишь отчеты за один день (например, просмотр ежедневных отчетов в течение месяца) так же имеет смысл выбора фильтра на короткий период, например, месяц (в вышеописанном примере - текущий месяц).
В случае, если это допустимо, можно создать новую базу (например, в начале нового года), а данные за прошлые года оставить в старой БД, используя для доступа к ним отдельный Сервер Отчетов.
В случае, если это допустимо, можно удалить данные за прошлые периоды из накопительной БД: либо воспользовавшись справочником Общие Смены, либо физически удалив данные из БД (SQL или check.udb) и закачав интересующие смены вручную (скопировав их в каталог incoming на Сервере Справочников)
В случае использования БД SQL существует способ получения отчетов напрямую из БД (без построения и последующего использования куба) при помощи SQL запроса: это позволяет запрашивать лишь действительно необходимые данные, с учетом фильтров на даты и прочие условия. Для создания подобного отчета следует в форме создания отчета в поле Report Source выбрать "SQL Query". Далее при помощи редактора FastReport 4 следует изменить макет либо сохранить автоматически сгенерированный. Для доступа к данным отчета используется такой же механизм, как и ранее: меню в главной форме либо пункт во всплывающем меню при клике на отчете в справочнике OLAP Кубы и Отчеты.
Кубы, вычисление которых занимает длительное время, имеет смысл проанализировать подробнее: выяснить, какие поля используются в отчетах, неиспользуемые поля следует удалить из структуры куба. Если куб является предустановленным, рекомендуется выставить ему периодичность "Никогда", создать его копию и в ней уже удалить неиспользуемые поля. Если используется много кубов в одной схеме, имеет смысл проанализировать возможность "склеивания" кубов в меньшее количество, но с большим количеством полей, таким образом уменьшив общее число кубов, подлежащих вычислению.
Если планируется анализ "закрытого" периода (с заданными датами начала и окончания), и данный интервал находится в прошлом (например, весь прошлый год) - периодичность такого куба следует выставить в "Никогда". Запустить процесс вычисления такого куба можно, вызвав из всплывающего меню пункт "Пересчитать".