Общие сведения о секционировании куба

 

Опубликовано: Июль 2016

Применимо к: System Center 2012 SP1 - Service Manager, System Center 2012 R2 Service Manager, System Center 2012 - Service Manager

Все группы мер в кубе поделены на разделы, каждый из которых определяет часть данных факта, загружаемую в группу мер. Службы SQL Server Analysis Services (SSAS) в выпуске SQL Server 2008 R2 Standard Edition поддерживают только один раздел на группу мер, а в выпуске Enterprise поддерживаются несколько разделов. Разделы полностью прозрачны для пользователя, однако они имеют большое влияние на производительность и масштабируемость. Например, разделы могут быть обработаны по отдельности и параллельно. У них может быть разный дизайн агрегатов, хотя эта особенность не была реализована в System Center 2012 – Service Manager. Можно выполнить повторную обработку раздела, не затрагивая другие разделы группы мер. Кроме того, система SSAS автоматически сканирует только те разделы, которые содержат необходимые для запроса данные, что позволяет значительно повысить производительность запросов.

Секционирование кубов выполняется при каждом запуске задания по обслуживанию хранилища данных — по умолчанию ежечасно. Выполняемый модуль данного процесса называется ManageCubePartitions. Его выполнение происходит всегда после этапа CreateMartPartitions. Данные зависимостей хранятся в таблице infra.moduletriggercondition.

Главная библиотека DLL, ответственная на секционирование, находится в служебной библиотеке DLL хранилища, Microsoft.EnterpriseManagement.Warehouse.Utility, в классе PartitionUtil. Конкретно же все задачи обслуживания разделов осуществляются при помощи метода ManagePartitions() в данном классе. Используемые для обслуживания и оперативной аналитической обработки хранилища данных библиотеки DLL Microsoft.EnterpriseManagement.Warehouse.Maintenance и Microsoft.EnterpriseManagement.Warehouse.Olap, вызывают библиотеку Microsoft.EnterpriseManagement.Warehouse.Utility для обработки разделов во время обслуживания хранилища и развертывания куба. Таким образом фактическое управление разделами осуществляется в общей служебной библиотеке DLL во избежание дублирования логики и кода.

Функция обслуживания секционирования куба выполняет следующие задачи:

  • Создание разделов

  • Удаление разделов

  • Обновление границ разделов

При выполнении этих задач осуществляется чтение таблицы SQL etl.TablePartition с целью определить все разделы фактов, созданные для данной группы мер. Происходят следующие действия:

  1. Запуск обработки куба для каждой группы мер в кубе

  2. Получение всех разделов из таблицы etl.TablePartition для группы мер

  3. Удаление всех разделов, имеющихся в группе мер, но отсутствующих в таблице etl.TablePartition

  4. Добавление всех новых разделов, существующих только в таблице etl.TablePartition

  5. Обновление разделов, которые могли измениться, путем сопоставления каждого раздела с параметрами RangeStartDate и RangeEndDate в таблице etl.TablePartition

Помните о следующих нюансах обработки куба:

  • В системе SQL Server 2008 R2 Standard Edition несколько разделов имеют только те группы мер, целевыми объектами которых являются факты. По умолчанию все группы мер и измерения содержат только один раздел. Поэтому у раздела отсутствуют какие-либо условия границы.

  • Границы раздела определяются с помощью привязки запроса, основанной на ключах дат, совпадающих с ключами дат соответствующего раздела факта в таблице etl.TablePartition.

См. также

Общее представление о кубах OLAP