Developing SQL Server Analysis Services Powered Applications

advertisement
Повышение эффективности
работы с хранилищем данных
с помощью служб интеграции
(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, с которой выполняется пакет.
Прекратить обработку, если БД
находится в состоянии Pending
Transaction.
DFT FactSales: корневая задача потока
данных, предназначенная для извлечения,
преобразования и загрузки ежедневных
данных о продажах.
Используйте конфигурации пакетов
Встраивайте их изначально
Они существенно облегчат работу в будущем
Упрощайте развертывание: Разработка  Контроль
качества  Производство
Используйте журналирование пакетов
Производительность и отладка
Демо? – показано, как настраивать журналы
производительности для SSIS
С самого начала думайте о безопасности
Учетные данные и другая конфиденциальная
информация
Package & Process IP
Конфигурации и параметры
SSIS — это визуальное программирование!
Используйте систему управления исходным кодом
Отменить сделанное не так просто, как в графическом
интерфейсе!
Совершенствуйте навыки работы в команде нескольких
разработчиков
Комментируйте пакеты и сценарии
Зачастую тонкости дизайна забываются через две недели
Поддерживать ваш код, возможно, придется другому человеку
Используйте обработку ошибок
Правильно расставляйте приоритеты ограничений задач
Найдите применение сообщениям об ошибках преобразований
— сохраняйте их в таблице для последующей обработки или
используйте по ходу выполнения, если ошибку можно
обработать в пакете
Пробуйте… Совершенствуйте свои сценарии
Параллелизм
Максимально используйте возможность параллельных вычислений
Разберитесь с моделью выполнения и организацией потоков
Сведите к минимуму использование блокирующих (асинхронных) компонентов,
например Sort, Aggregate
Сворачивайте длинные пути синхронных компонентов (например, объедините 10
отдельных DerivedColumnTx в строке)
При необходимости увеличьте значение свойства EngineThreads объекта DataFlow
Производительность
До минимума сокращайте время накопления данных
Массовая загрузка / Быстрая загрузка
Будьте ближе к данным
Приоритеты
Обязательно сохраняйте логику рабочего потока, которой можно
будет следовать в случае сбоя
Проверяйте граничные условия
Тонкости
Документируйте свой код! Пусть он будет дружественным — вдруг
им придется заниматься кому-то другому
Разберитесь в платформе
Синхронные и асинхронные компоненты
Типичные (и альтернативные) способы проектирования
Соображения, связанные с памятью
Не бойтесь писать собственные компоненты
Сосредоточьтесь на производительности
Выбирайте правильный инструмент для решения задачи
Пример: сортировка в SQL и SSIS
Минимизируйте объем данных (фильтруйте строки и столбцы)
Будьте ближе к данным
Краткий обзор SSIS
Основные правила разработки пакетов
Оптимизация компонентов
Настройка производительности
Не слишком увлекайтесь дизайном
Избыток подвижных частей делает решение неэлегантным и
медленным
Не бойтесь экспериментов — решить задачу можно несколькими
способами
Максимизируйте параллелизм
Выделяйте достаточно потоков
Свойство EngineThreads задачи DataFlow
Ориентир – кол-во источников данных + кол-во асинхронных
компонентов
Минимизируйте блокировку
Синхронные и асинхронные компоненты
MemCopy потребляет много ресурсов — по возможности
сокращайте количество асинхронных компонентов в потоке —
пример будет дан позже
Сокращайте объем вспомогательных данных
Например, минимизируйте данные, извлекаемые 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
OLEDB
ADOMD
AMO
SSMS
Профайлер
Сервер
анализа
XMLA
Клиентские
приложения
BIDS
TCP
IIS
HTTP
ADOMD
.NET
Объект анализа (например, Заказчики)
Состоит из:
Атрибутов, описывающих сущность
Иерархий, выстраивающих элементы
измерения каким-либо осмысленным образом
ID заказчика
Имя
Фамилия
Штат
Город
Семья
Пол
… Воз-
123
Джон
Доу
WA
Сиэттл
Женат
М
…
42
456
Лэнс
Смит
WA
Редмонд
Холост
М
…
34
789
Джил
Томпсон
OR
Портленд
Замужем
Ж
…
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
Используйте теги <Parallel> </Parallel>, чтобы
группировать задачи обработки, пока сервер не
будет использовать максимум ресурсов
Должным образом применяйте теги
<Transaction> </Transaction>
Используйте вместо 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-97d07f7151b2011c/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 и другие представленные здесь наименования продуктов могут быть
зарегистрированными товарными знаками в США и других странах.
Информация в данной презентации предоставляется исключительно в ознакомительных целях и отражает текущие взгляды корпорации Майкрософт. Данный документ не
декларирует намерения Майкрософт. Актуальность содержащейся в презентации информации гарантируется только на момент ее демонстрации.
КОРПОРАЦИЯ МАЙКРОСОФТ НЕ ПРЕДОСТАВЛЯЕТ В ДАННОМ ДОКУМЕНТЕ НИКАКИХ ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ.
Download