Индексы в хранилище данных

Я создаю витрину данных в SQL Server 2008, используя SSIS для загрузки и SSAS для куба OLAP. Пока все работает отлично. Однако я не создал никаких индексов в исходной базе данных, кроме кластеризации по умолчанию для первичного ключа.

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

Есть ли какая-то индексация, которую я должен сделать, чтобы улучшить обработку измерений и куба? Я использую ваше обычное хранилище Molap.


person Dave Bauman    schedule 12.06.2009    source источник


Ответы (1)


Как правило, рекомендуется держать индексы и ограничения вне витрин, если только они не будут использоваться непосредственно для создания отчетов. Индексы и ограничения могут серьезно сократить ваше время ETL (особенно с объемами данных, которые обычно поступают в хранилища).

То, что я обнаружил, работает лучше всего, так это иметь один единственный PK для всех ваших таблиц (включая факт, потому что у меня есть составные ключи, и я просто хеширую составной, чтобы получить себе PK, если мне нужно). Наличие PK (столбцов идентификаторов) обеспечивает автоматически сгенерированный индекс, быстрое соединение при построении кубов и очень быстрые вставки.

Если вы собираетесь делать отчеты, создайте индексы, как вы это делаете, но обязательно отключите, а затем перестройте индексы как часть вашего процесса ETL. В противном случае массовые вставки занимают некоторое время (в некоторых случаях часы за часами).

person Eric    schedule 12.06.2009
comment
Это в значительной степени то, что я делал до сих пор. Приятно видеть, что я не схожу с ума. - person Dave Bauman; 16.06.2009