Developing SQL Server Analysis Services Powered Applications

Download Report

Transcript Developing SQL Server Analysis Services Powered Applications

Повышение эффективности работы с хранилищем данных с помощью служб интеграции (SSIS) и анализа (SSAS) Марин Безич Менеджер продуктов SQL BI Microsoft EMEA

Отчеты Информ. Панели Карты Показат-ей Excel Средства BI Службы анализа Хранилище данных (SQL Server, Oracle, DB2, Teradata) Службы интеграции SQL/Oracle SAP/Dynamics Устаревшие системы Текстовые файлы XML

Необходимые знания Знакомство с SSIS и SSAS Цели Обсудить структуру , производительность и масштабируемость при разработке ETL приложений и кубов данных ( модели UDM) Познакомиться с эффективными методиками Разобрать типичные ошибки

Службы интеграции (SSIS) Краткий обзор Основные правила разработки пакетов Оптимизация компонентов Настройка производительности Службы анализа (SSAS) Обзор модели UDM Эффективные методы разработки UDM Советы по повышению производительности

Впервые появились в

SQL Server 2005

Развитие служб

Data Transformation Services

Платформа нового поколения для высокопроизводите льных технологий интеграции данных

Оповещение и распространение

ETL Анализ данных Данные центра телефонной поддержки: частично структурированные Анализ текста Накопление Ручное кодирование Накопление ETL Хранилище Старые данные: двоичные файлы Очистка и ETL Отчеты ETL Накопление Прикладная БД Мобильные данные •Интеграция данных и помещение их в хранилище предполагает проведение ряда отдельных, разделенных на этапы операции .

•Для подготовки данных необходимы различные, зачастую несовместимые , инструменты .

•Получение отчетов и распространение информации происходят медленно, затрудняя оперативное реагирование .

•Чем больше объем данных, тем менее работоспособен этот сценарий .

Оповещение и распространение

Компоненты анализа текста Компоненты анализа данных Мобильные данные Центр телефонной поддержки: Частично структурированные данные Нестандартный источник Слияние Хранилище Старые данные: двоичные файлы Стандартные источники Компоненты очистки данных Прикладная БД Службы интеграции SQL Server Отчеты •Интеграция данных и помещение их в хранилище объединены в непрерывную управляемую операцию .

•Данные извлекаются , подготавливаются и загружаются в ходе единого контролируемого процесса .

•Получение отчетов и распространение информации производятся параллельно с заполнением хранилища .

•Масштабируемость позволяет справляться со сложными данными большого объема .

Поток управления выполнения ) ( среда Параллельная обработка рабочих потоков Выполняет контейнеры и задачи Поток данных (“ конвейер ”) Специальная задача времени выполнения Высокопроизводительный конвейер данных Применяет диаграммы компонентов к перемещению данных Компонент — это источник , преобразование или назначение Возможна высокая степень параллелизма Неуправляемый код Управляемый код Объектная модель Среда преобразования данных

Пакет

Задача Задача Контейнер Задача Задача Задача Задача потока данных

Задача потока данных

Поток преобразования данных Источник Источник Преобразование Преобразование Назначение Назначение

DTP API

Краткий обзор SSIS

Основные правила разработки пакетов

Оптимизация компонентов Настройка производительности

Следуйте указаниям Microsoft по разработке Итеративные проектирование , разработка и тестирование Разберитесь как функционирует бизнес Путь к успеху — в понимании людей и процессов Замечательный справочник — книга “Data Warehouse ETL Toolkit” (Kimball) Взгляните на проблему шире Конфликты ресурсов , окна обработки , … Службы SSIS не прощают плохой структуры БД Старые принципы никто не отменял, например, загружать с индексами или без них ?

Соображения по платформам Будет ли работать на IA64 / X64?

BIDS отсутствует на IA64 – как делать отладку ?

Доступен ли в IA64 драйвер XXX для OLE-DB?

Использование памяти и ресурсов на различных платформах

Модульность процессов Разделите сложную задачу ETL на логически самостоятельные пакеты ( в противоположность «монолитному» дизайну ) Совершенствуйте навыки в разработке и отладке Модульность пакетов Разделите подпроцессы внутри пакета на отдельные контейнеры Выглядит элегантнее , разрабатывать проще В процессе отладки можно отключать целые контейнеры Модульность компонентов Используйте Script Task/Transform для одноразовых задач Создавайте собственные компоненты, предусматривая их повторное использование

SCR Audit OnPreExecute: создает в журнале аудита начальную запись пакета, связанную с группой загрузки ETL, с которой выполняется пакет.

Прекратить обработку Transaction .

, если БД находится в состоянии Pending DFT FactSales: корневая задача потока данных, предназначенная для извлечения, преобразования и загрузки ежедневных данных о продажах.

Используйте конфигурации пакетов Встраивайте их изначально Они существенно облегчат работу в будущем Упрощайте развертывание: Разработка качества  Производство  Контроль Используйте журналирование пакетов Производительность и отладка Демо ? – показано, как настраивать журналы производительности для SSIS С самого начала думайте о безопасности Учетные данные и другая конфиденциальная информация Package & Process IP Конфигурации и параметры

SSIS — это визуальное программирование ! Используйте систему управления исходным кодом Отменить сделанное не так просто, как в графическом интерфейсе !

Совершенствуйте навыки работы в команде нескольких разработчиков Комментируйте пакеты и сценарии Зачастую тонкости дизайна забываются через две недели Поддерживать ваш код, возможно, придется другому человеку Используйте обработку ошибок Правильно расставляйте приоритеты ограничений задач Найдите применение сообщениям об ошибках преобразований — сохраняйте их в таблице для последующей обработки или используйте по ходу выполнения, если ошибку можно обработать в пакете Пробуйте … Совершенствуйте свои сценарии

Параллелизм Максимально используйте возможность параллельных вычислений Разберитесь с моделью выполнения и организацией потоков Сведите к минимуму использование блокирующих ( асинхронных ) компонентов, например Sort, Aggregate Сворачивайте длинные пути синхронных компонентов ( например, объедините 10 отдельных DerivedColumnTx в строке ) При необходимости увеличьте значение свойства EngineThreads объекта DataFlow Производительность До минимума сокращайте время накопления данных Массовая загрузка / Быстрая загрузка Будьте ближе к данным Приоритеты Обязательно сохраняйте логику рабочего потока, которой можно будет следовать в случае сбоя Проверяйте граничные условия Тонкости Документируйте свой код ! Пусть он будет дружественным — вдруг им придется заниматься кому-то другому

Разберитесь в платформе Синхронные и асинхронные компоненты Типичные ( и альтернативные ) способы проектирования Соображения, связанные с памятью Не бойтесь писать собственные компоненты Сосредоточьтесь на производительности Выбирайте правильный инструмент для решения задачи Пример: сортировка в SQL и SSIS Минимизируйте объем данных ( фильтруйте строки и столбцы ) Будьте ближе к данным

Краткий обзор SSIS Основные правила разработки пакетов

Оптимизация компонентов

Настройка производительности

Не слишком увлекайтесь дизайном Избыток подвижных частей делает решение неэлегантным и медленным Не бойтесь экспериментов — решить задачу можно несколькими способами Максимизируйте параллелизм Выделяйте достаточно потоков Свойство EngineThreads задачи DataFlow Ориентир – кол-во источников данных + кол-во асинхронных компонентов Минимизируйте блокировку Синхронные и асинхронные компоненты Mem C opy потребляет много ресурсов — по возможности сокращайте количество асинхронных компонентов в потоке — пример будет дан позже Сокращайте объем вспомогательных данных Например , минимизируйте данные, извлекаемые LookupTx

Краткий обзор SSIS Основные правила разработки пакетов Оптимизация компонентов

Настройка производительности

Используйте журналирование и аудит MsgBox — ваш друг Отладчики конвейеров — ваши друзья Используйте компонент для определения пропускной способности из проекта REAL Экспериментируйте с различными методиками Используйте систему управления исходным кодом Сосредоточьтесь на «узких местах» — о методологии поговорим позже Проводите тесты на различных платформах 32 разрядные , IA64, x64 Локальное хранилище , SAN Соображения, связанные с памятью Соображения, связанные с сетью и ее топологией

Удаляйте избыточные столбцы Вместо таблиц применяйте инструкции SELECT SELECT * — ваш враг Кроме того, удаляйте избыточные столбцы после каждого асинхронного компонента !

Фильтруйте строки Предложение WHERE — ваш друг Условное расщепление в SSIS Конкатенируйте или перенаправляйте ненужные столбцы Параллельная загрузка Разделяйте исходные данные на несколько блоков Плоские файлы на несколько файлов Реляционные таблицы – посредством ключевых полей и индексов Несколько компонентов-назначений загружают одну и ту же таблицу

Достаточно ли хороша программа BCP?

Накладные расходы на запуск пакета SSIS для небольших наборов данных могут перевесить любой выигрыш в производительности BCP Нужна ли более значительная управляемость SSIS?

Какой способ ?

Есть много способов просмотра — какой из них более подходит ?

Примеры способов смотрите в материалах проекта Real: http://www.microsoft.com/sql/solutions/bi/projectreal.mspx

Какой компонент ?

Массовый импорт или поток данных Массовый импорт обеспечивает более высокоую производительность, при условии что не требуются преобразования и фильтрование, а целевой системой является SQL Server.

Lookup или MergeJoin (LeftJoin) или инструкции SQL для наборов MergeJoin может понадобиться, если вам не удается заполнить кэш просмотра .

Инструкции SQL для наборов позволяют повысить производительность в случае повторяющихся промахов в кэше просмотра за счет применения операций для наборов .

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

Используйте выводные данные ошибки для обработки промахов просмотра Игнорируем ошибки просмотра и ищем значения NULL в производном столбце 100 000 000 строк Вывод ошибки просмотра (100 000 000 строк) 100 000 000 строк 100 000 000 строк 100 000 000 строк 100 000 000 строк 100 000 000 строк Игнорирует ошибки просмотра 105 секунд 83 секунды

Оптимизируйте и стабилизируйте основы Минимизируйте накопление ( по возможности всегда применяйте RawFiles) Убедитесь, что у вас достаточно памяти Windows, диски , сеть , … Файловые группы SQL, индексирование , секционирование Определите базовый уровень Заменяйте назначения посредством RowCount Пропускная способность Источник ->RowCount Пропускная способность Источник > Назначение Добавляйте (изменяйте) компоненты по одному, чтобы видеть последствия Это относится и к уровню БД Применяйте управление исходным кодом !

Оптимизируйте медленные компоненты с учетом наличия ресурсов

Сосредоточьтесь на критическом пути Применяйте доступные ресурсы

Ограничения по памяти Ограничения по чтению и процессору Полный разрыв!

Оптимизируйте самое медленное

Применяйте самые эффективные и признанные методы разработки Разберитесь во влиянии архитектуры SSIS на производительность Буферы , типы компонентов Способы проектирования Изучайте новые возможности Но не забывайте существующие принципы Используйте внутреннюю функциональность Но не бойтесь ее расширить Определяйте производительность Сосредоточьтесь на «узких местах» По возможности максимизируйте параллелизм и использование памяти Учитывайте возможности различных платформ (64 разрядная память ) Тестирование — ключ к успеху

Службы анализа (SSAS)

Серверная архитектура и основы UDM Эффективное проектирование куба Секционирование и агрегирование Обработка Запросы и вычисления Заключение

Excel ADOMD OLEDB Клиентские приложения BIDS SSMS Профайлер AMO ADOMD .NET

XMLA TCP IIS HTTP Сервер анализа

Объект анализа (например, Заказчики) Состоит из: Атрибутов, описывающих сущность Иерархий, выстраивающих элементы измерения каким-либо осмысленным образом ID заказчика Имя 123 456 789 Фамилия Джон Лэнс Джил Доу Смит Томпсон Штат WA WA OR Город Семья Сиэттл Редмонд Портленд Женат Холост Замужем Пол М М Ж … Воз р а с т … 42 … 34 … 21

Контейнеры элементов измерения.

Полностью определяют пространство измерения.

Позволяют разделять и группировать элементы пространства измерения различными способами.

Заказчики из

Вайоминга,

у

которых возраст > 50 Семейные

заказчики

мужского пола

Обычно соединены связями «один ко многим» Город  Регион, Регион  Страна и пр.

Все атрибуты неявно связаны с ключом

Упорядоченное разделение атрибутов на уровни Траектория в пространстве измерения Пользовательские иерархии – обычно многоуровневые Иерархии атрибутов – создаются неявно для каждого атрибута – одноуровневые Заказчики по географии Заказчики по демографии Страна Семья Регион Пол Город Заказчик Заказчик

Страна Регион Город Пол Заказчик Семья Возраст Страна Регион Город Заказчик Заказчик Город Атрибуты Пол Заказчик Регион Страна Иерархии Семья Пол Заказчик Пол Семья

Собрание измерений и мер Мера  численные данные, ассоциированные с набором измерений ( напр. Продано единиц, Объем продаж, Затраты) Многомерное пространство Определяется измерениями и мерами Напр. (Заказчики, Продукты, Время, Меры) Пересечение элементов измерения и мер представляет собою ячейку (США, Велосипеды, 2004, Объем продаж) = 1 523 374,83 долларов

Продано пива в Бостоне в январе

Р ы н о к Бостон Нью-Йорк Чикаго Сиэттл Горох Зерно Хлеб Молоко Пиво Товар Март Февраль Январь Время

Группа мер с одной и той же размерностью Аналогична таблице фактов Куб может содержать несколько групп мер Напр. Продажи, Опись, Финансы Многомерное пространство Подмножество измерений и мер в кубе Сравнение с AS2000 Виртуальный куб  Куб Куб  Группа мер

Заказчики Товары Время Акции Склад Отдел Счет Сценарий Продажи X X X X

Группа мер

Опись X X X Финансы X X X X

Серверная архитектура и основы UDM Эффективное проектирование куба Секционирование и агрегирование Обработка Запросы и вычисления Заключение

Связи атрибутов Связи атрибутов Связи атрибутов

Связи между атрибутами «один ко многим» Если вы определите их там, где они уместны, сервер просто будет «лучше работать» Примеры: Город  Регион, Регион  Страна День  Месяц, Месяц  Квартал, Квартал  Год Подкатегория товара  Категория товара Жесткие и гибкие связи (по умолчанию гибкие) Заказчик  Город, Заказчик  Телефон — гибкие Заказчик  ДатаРожд, Город  Регион — жесткие Все атрибуты неявно соотнесены с ключевым атрибутом

Город Регион Пол Заказчик Семья Возраст Страна

Страна Регион Город Пол Семья Возраст Заказчик

Семантика многомерных выражений (MDX) сообщает ядру вычислений, как делать свертку значений мер если атрибут гранулярности группы мер отличен от ключевого атрибута (напр. Продажи по Месяцам) требуются связи между атрибутом гранулярности и другими атрибутами (напр. Месяц  Квартал, Квартал  Год) в противном случае данные для атрибутов Квартал и Год не возвращаются (возвращается NULL) Семантика MDX подробно описана здесь: http://www.sqlserveranalysisservices.com/OLAPPapers/AttributeRelationships.htm

Хранение сокращают число избыточных отношений между элементами измерений — нормализуется хранение измерений позволяют объединять записи внутри сегментов секционирования (напр. сохранять вместе все данные для конкретного месяца) Обработка сокращают использование памяти при обработке измерений — в памяти нужно размещать меньше таблиц хэширования позволяют большим измерениям преодолевать 32 разрядный предел в целом ускоряют обработку измерений и секций

Производительность запросов ускоряется доступ к хранилищу измерений планы выполнения становятся более эффективными Проектирование агрегирования алгоритмы агрегирования производят более эффективные наборы агрегатов Безопасность измерений DeniedSet = { Регион.Вайоминг} запретит наличие городов и заказчиков из Вайоминга — требуются связи атрибутов Свойства элементов связи атрибутов определяют свойства элементов на уровнях

Создать связь атрибутов просто, но… Обращайте особое внимание на ключевые столбцы!

Убедитесь, что у каждого атрибута есть уникальные ключевые столбцы (при необходимости добавляйте составные ключи) Между ключевыми столбцами двух атрибутов должна быть связь «один ко многим» Некорректные ключевые столбцы приведут к тому,что у элемента будет несколько родителей при обработке измерения будет произвольно выбран один из родителей, и обработка завершится без ошибки иерархия будет выглядеть неправильно!

Не забывайте избавляться от избыточных связей!

Все атрибуты начинаются с создания связи с ключом Заказчик  Город  Регион  Заказчик  Регион (избыточное) Заказчик  Страна (избыточное) Страна

Измерение «Время» День, Неделя, Месяц, Квартал, Год Год: от 2003 до 2010 Квартал : от 1 до 4 Неделя Год Месяц: от 1 до 12 Неделя: от 1 до 52 День: от 20030101 до 20101231 День Квартал Месяц

Измерение «Время» День, Неделя, Месяц, Квартал, Год Год: от 2003 до 2010 Квартал: от 1 до 4 – столбцы (Год, Квартал) Ключевые Месяц: от 1 до 12 Неделя: от 1 до 52 День: от 20030101 до 20101231 Неделя Год День Квартал Месяц

Связи атрибутов

Пример Измерение «Время» День, Неделя, Месяц, Квартал, Год Год: от 2003 до 2010 Квартал: от 1 до 4 – (год, квартал) Ключевые столбцы Неделя Месяц: от 1 до 12 – ( год, месяц) Ключевые столбцы Неделя: от 1 до 52 День: от 20030101 до 20101231 Год День Квартал Месяц

Связи атрибутов

Пример Измерение «Время» День, Неделя, Месяц, Квартал, Год Год: от 2003 до 2010 Квартал: от 1 до 4 – ( Год, Квартал) Ключевые столбцы Неделя Месяц: от 1 до 12 – ( Год, Месяц) Ключевые столбцы Неделя: от 1 до 52 – Ключевые столбцы Год День Квартал Месяц ( Год, Неделя) День: от 20030101 до 20101231

Демонстрация

Определение связей атрибутов

Заданные траектории в пространстве измерений, определенные с помощью атрибутов Иерархии атрибутов позволяют перемещаться по произвольным траекториям Зачем тогда создавать пользовательские иерархии?

Можно указать конечному пользователю на интересные траектории Существующие клиентские средства «не знают» об атрибутах Производительность Оптимизация траектории в процессе обработки Материализация дерева иерархий на диске Для конструктора агрегатов предпочтительны пользовательские иерархии

Связь «один ко многим» (через связи атрибутов) между каждой парой смежных уровней Примеры: Страна-Регион-Город-Заказчик (естественная) Страна-Город (естественная) Регион-Заказчик (естественная) Возраст-Пол-Заказчик (неестественная) Год-Квартал-Месяц (зависит от ключевых столбцов) Сколько кварталов и месяцев?

4 и 12 для всех годов (неестественная) 4 и 12 для каждого года (естественная)

Соображения производительности В ходе обработки на диске материализуются только естественные иерархии Неестественные иерархии создаются «на ходу» при выполнении запросов (и кэшируются в памяти) Внутри сервера происходит разложение неестественных иерархий на естественные компоненты По сути, действует как нестандартная траектория (но несколько лучше) По возможности создавайте естественные иерархии Используйте связи атрибутов Не всегда возможно (напр. Возраст-Пол)

Измерения Консолидируйте несколько иерархий в единое измерение (если они не связаны через таблицу фактов) Если важна производительность, избегайте режима хранения ROLAP Используйте ролевые измерения (напр. ДатаЗаказа, ДатаОплаты, ДатаПоставки) – не создавайте несколько физических копий Продуманно используйте измерения «родитель потомок» Агрегирование промежуточных уровней не поддерживается Продуманно используйте измерения «многие ко многим» Они медленнее обычных измерений, но быстрее вычислений Промежуточная группа мер должна быть «мала» по сравнению с основной группой мер

Атрибуты Определяйте все возможные связи атрибутов!

При необходимости помечайте связи атрибутов как жесткие Используйте целочисленные (или числовые) ключевые столбцы Задавайте значение False для свойства AttributeHierarchyEnabled атрибутов, не используемых для перемещения (напр. НомерТелефона, Адрес) Задавайте значение NotOptimized для свойства AttributeHierarchyOptimizedState редко используемых атрибутов Задавайте значение False для свойства AttributeHierarchyOrdered , если вам неважен порядок элементов, возвращаемых запросом Иерархии По возможности используйте естественные иерархии

Меры Используйте наиболее компактные числовые типы Используйте полуаддитивные агрегирующие функции вместо многомерных выражений, приводящих к тому же результату Размещайте меры Distinct Count в различных группах мер (BIDS делает это автоматически) Старайтесь не использовать текстовые исходные столбцы для мер Distinct Count

Серверная архитектура и основы UDM Эффективное проектирование куба Секционирование и агрегирование Обработка Запросы и вычисления Заключение

Способ разделить большой куб на управляемые фрагменты Секции можно добавлять, обрабатывать и удалять независимо друг от друга Обновление данных за последний месяц не затронет данные за предшествующие месяцы Легко реализовать сценарий скользящего окна Напр. окно продолжительностью 24 месяца  добавить секцию за июнь 2006 года и удалить секцию за июнь 2004 года Для секций можно раздельно задавать параметры хранения

Секционирование работает только в Enterprise Edition!

Запрос по нескольким секциям может обрабатываться параллельно Эффективнее используются ресурсы сервера Сокращается время загрузки хранилища данных Запросы изолированы в соответствующих секциях  нужно просматривать меньше данных SELECT … FROM … WHERE [Время].[Год].[2006] Запрос обращается только к секциям 2006 года Вывод  секции улучшают: управляемость производительность масштабируемость

Не более 20 млн строк на секцию Определите срез секции Необязателен в MOLAP – сервер сам определяет срез и сравнивает его с пользовательским срезом (если таковой имеется) Должен быть задан для ROLAP Управляйте параметрами хранения с помощью пользовательских конфигураций Частые запросы  MOLAP и много агрегатов Периодические запросы  MOLAP с минимумом агрегатов Исторические данные  ROLAP без агрегатов Чередуйте диски – используйте несколько контроллеров во избежание конфликтов ввода-вывода

Определяйте все возможные связи атрибутов Задавайте точные счетчики элементов атрибута и таблицы фактов Задавайте значение AggregationUsage, чтобы управлять работой конструктора агрегатов Для редко опрашиваемых атрибутов задавайте значение None Для часто опрашиваемых атрибутов задавайте значение Unrestricted Не создавайте слишком много агрегатов Сотни, но не тысячи!

Не создавайте агрегаты, объем которых превышает 30% объема таблицы фактов (алгоритм конструктора агрегатов этого не допускает)

Цикл разработки агрегата Используйте для разработки начального набора агрегатов мастер Storage Design Wizard (выигрыш в производительности ~20%) Включите журнал запросов и запустите пробную рабочую нагрузку (бета-тестирование с ограниченным набором пользователей) Применяйте для тонкой настройки агрегатов мастер Usage Based Optimization (UBO) Wizard Стремитесь к большому выигрышу в производительности (70-80%) Повторно обрабатывайте секции, чтобы новые агрегаты вступили в силу Периодически используйте UBO для тонкой настройки агрегатов

Серверная архитектура и основы UDM Эффективное проектирование куба Секционирование и агрегирование Обработка Запросы и вычисления Заключение

Настройка производительности SQL Server Совершенствуйте запросы, применяемые для извлечения данных SQL Server Проверяйте планы выполнения и индексирование Регулярно проводите настройку производительности SQL Усовершенствование Служб Анализа Применяйте SP2 !!

Обработка 20 секций: SP1 1:56, SP2: 1:06 Не используйте настройки по умолчанию для параллельной обработки Перейдите на вкладку дополнительных параметров и измените их Контролируйте значения: Максимального числа подключений к источнику данных MaxParallel – количество параллельно обрабатываемых секций, не давайте серверу самому определять их число.

По возможности, применяйте тип INT для ключей.

Параллельные вычисления возможны только в Enterprise Edition!

Наилучшую производительность обеспечивают ASCMD.EXE и XMLA Используйте теги , чтобы группировать задачи обработки, пока сервер не будет использовать максимум ресурсов Должным образом применяйте теги Используйте вместо ProcessFull раздельные ProcessFact и ProcessIndex. При этом сокращается использование памяти.

ProcessClearIndexes обновляет их.

удаляет существующие индексы, а ProcessIndexes генерирует или

Обработка секций Для больших секций разделяйте ProcessFull на ProcessData + ProcessIndexes потребление памяти – сокращается Следите за использованием диска при обработке агрегатов (счетчики монитора производительности, связанные с использованием временных файлов) Добавьте памяти, включите /3GB, перейдите на x64/ia64 Периодически проводите полную обработку секций Позволяет добиться большего сжатия, чем при повторной добавочной обработке Источники данных Старайтесь не применять источники данных .NET – OLEDB обрабатывается быстрее

Серверная архитектура и основы UDM Эффективное проектирование куба Секционирование и агрегирование Обработка Запросы и вычисления Заключение

Большинство клиентских программ (Excel, Proclarity) отображает только непустые результаты – элементы без данных отбрасываются При отсутствии вычислений возвращение непустых данных происходит быстро – достаточно проверить фактические данные С вычислениям возвращение непустых данных может происходить медленно – выражение вычисляется для каждой ячейки Параметр Non_Empty_Behavior позволяет только проверять фактические данные при вычислениях Примечание: осмотрительно пользуйтесь подсказками запросов!

Create Member [Measures].[Internet Gross Profit] As [Internet Sales Amount] - [Internet Total Cost], Format_String = "Currency", Non_Empty_Behavior = [Internet Sales Amount];

Атрибуты/иерархии в пределах измерения всегда существуют вместе Город.Сиэттл * Регион.Элементы возвращает {( Сиэттл, Вайоминг)} ( Сиэттл, Орегон), (Сиэттл, Калифорния) не «существуют»» Используйте мощь auto-exists Применяйте Exists/CrossJoin вместо .Properties – это быстрее Требует включения иерархии атрибутов в свойствах элемента

Filter(Customer.Members, Customer.CurrentMember.Properties(“Gender”) = “Male”) Exists(Customer.Members, Gender.[Male])

Используйте области действия вместо условий, например IIF/CASE Области действия определяются только статически Условия определяются динамически для каждой ячейки Всегда старайтесь добавлять в IIF вариант для случая, когда в одной из ветвей содержится NULL

Create Member Measures.Sales As Iif(Currency.CurrentMember Is Currency.USD, Measures.SalesUSD, Measures.SalesUSD * Measures.XRate); Create Member Measures.Sales As Null; Scope(Measures.Sales, Currency.Members); This = Measures.SalesUSD * Measures.XRate; Scope(Currency.USA); This = Measures.SalesUSD; End Scope; End Scope;

По возможности применяйте вычисляемые элементы вместо вычисляемых ячеек Используйте .MemberValue для вычислений с числовыми атрибутами Filter(Customer.members, Salary.MemberValue > 100000) Избегайте избыточного использования .CurrentMember и .Value

(Time.CurrentMember.PrevMember, Measures.CurrentMember ).Value можно заменить на Time.PrevMember

Избегайте LinkMember, StrToSet, StrToMember, StrToValue В представлении DSV заменяйте простые вычисления на вычисляемые столбцы Вычисления всегда лучше проводить во время обработки Более подробная информация: Analysis Services Performance Whitepaper: http://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0 7f7151b2011c/SSAS2005PerfGuide.doc

http://sqljunkies.com/weblog/mosha http://sqlserveranalysisservices.com

AS2005 — наиболее значительный шаг вперед после AS2000 С самого начала проектирования учитывайте требования производительности и масштабируемости Многие принципы AS2000 по-прежнему верны Конструирование измерений, секции, агрегаты В AS2005 появилось много новых принципов Связи атрибутов, естественные иерархии Новые возможности конструирования – роли, «многие ко многим», справочные измерения, полуаддитивные меры Гибкие возможности обработки Сценарии MDX, области Для максимальной производительности и масштабируемости используйте Службы Анализа совместно с SQL Server Enterprise Edition

SSIS Сайт SQL Server Integration Services – ссылки на блоги, учебные программы, партнеров и т. д.: http://msdn.microsoft.com/SQL/sqlwarehouse/SSIS/default.aspx

Форум SSIS: http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=80&SiteID=1 Сайт сообщества SSIS MVP : http://www.sqlis.com

SSAS Блоги: http://blogs.msdn.com/sqlcat PROJECT REAL-Business Intelligence in Practice Analysis Services-Performance Guide TechNet: Analysis Services for IT Professionals Microsoft BI Открытый сайт SQL Server Business Intelligence: http://www.microsoft.com/sql/evaluation/bi/default.asp

http://www.microsoft.com/bi

Ваши способности. Наше вдохновение.

© 2006 Корпорация Майкрософт. Все права защищены. Microsoft, Windows, Windows Vista и другие представленные здесь наименования продуктов могут быть зарегистрированными товарными знаками в США и других странах.

Информация в данной презентации предоставляется исключительно в ознакомительных целях и отражает текущие взгляды корпорации Майкрософт. Данный документ не декларирует намерения Майкрософт. Актуальность содержащейся в презентации информации гарантируется только на момент ее демонстрации. КОРПОРАЦИЯ МАЙКРОСОФТ НЕ ПРЕДОСТАВЛЯЕТ В ДАННОМ ДОКУМЕНТЕ НИКАКИХ ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ.