Практика использования Microsoft SQL Server 2008 и 2008 R2 для...

40
Практика использования Microsoft SQL Server 2008 и 2008 R2 для систем хранилищ данных Борис Барышников Senior Program Manager Microsoft Corp. BI 303

description

Практика использования Microsoft SQL Server 2008 и 2008 R2 для систем хранилищ данных. Борис Барышников. Senior Program Manager. Microsoft Corp. BI 303. Содержание . Основные принципы хранилищ данных (Data Warehousing – DW) Логический и физический дизайн базы - PowerPoint PPT Presentation

Transcript of Практика использования Microsoft SQL Server 2008 и 2008 R2 для...

Page 1: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Практика использования Microsoft SQL Server 2008 и 2008 R2 для систем хранилищ данныхБорис БарышниковSenior Program ManagerMicrosoft Corp.

BI 303

Page 2: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Содержание Основные принципы хранилищ данных (Data Warehousing – DW)Логический и физический дизайн базы

Некоторые элементы дизайна и конфигурации

Загрузка данныхВозможности SQL Server 2008 и 2008 R2 в области хранилищ данных для ускорения скорости выполнения запросовАнонс возможностей SQL Server “Denali”

Page 3: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

О докладчикеВ Microsoft Corp. чуть более 6 лет

Всё время в команде SQL Server EngineРаботал с различными компонентами и технологиями движка SQL Server

В 2008 версии руководил проектом создания регулятора ресурсов

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

Page 4: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Основные принципы DWФункции хранилища данных

Депозитарий данных для поддержки тщательного анализа данных и создания отчётов

Источником данных в DW часто являются многочисленные базы обработки транзакций (OLTP)Например:

Продажи

Склад Системы обработки транзакций

Стадия подготов

киDW

Отчёты и

анализ

Page 5: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Логический дизайнНаиболее распространёнными являются схемы «звезда» и «снежинка»

Sales

Customer

Store

Territory

Product Date

Country

Таблица фактов

Таблица измерений

Измерение по схеме «снежинка»

Принципы моделирования подобных схем можно найти в The Data Warehouse Toolkitby Ralph Kimball, 2002.

Page 6: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Логический дизайн - практика

Используйте схему по типу «звезда» или «снежинка»Избегайте длинных строк, большого объема двоичных данных или колонок типа uniqueidentifier в таблице фактовИспользуйте целочисленные типы для ключевых колонок таблиц измеренийИзбегайте указания точности выше, чем необходимо в типах numeric (напр., (15,4) vs. (38,4))

Page 7: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Физический дизайнРеализация физической структуры базы для оптимальной производительностиХороший физический дизайн – сложный и трудоёмкий процессГлавные шаги

Выбор расположения файлов и файловых групп на диске для вашей системы I/OВыбор оптимального секционирования таблицИспользование PAGE compression для таблиц фактов

Page 8: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Конфигурация файлов/групп для систем хранилищ данныхПринципы: быстрый

последовательный доступ I/O, простота создания и управления большими таблицами

Каждый файл отдельный дискВсе файлы одна группа Все таблицы в эту файловую группуFile1

File2

File32…

File Group 1

Page 9: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Конфигурация файлов/групп для систем хранилищ данныхИзбегайте использования более 32

файлов в одной группеИзвестная проблема производительности в настоящий момент

Если у вас более 32 физических дисков, сгруппируйте их в логические, используя средства ОС или SAN

Далее используйте логические устройства как описано вышеБолее подробно в SQL Server Fast Track guideДля больших объемов данных, см. также Parallel Data Warehouse

Page 10: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Дизайн индексовДля таблиц фактов

Используйте clustered index on DateKey columnЕсли таблица > ~50GB, также секционируйте её по DateKey (напр., по месяцам)DateKey в формате YYYYMMDD, e.g. 20101117Используйте PAGE compressionБез дополнительных индексов (если не требуются point lookups)

Как правило признак смешанного использования системы

Page 11: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Дизайн индексовДля таблиц измерений

Для маленьких таблиц – не используйте индексы кроме тех, что обеспечивают гарантии целостности данных (constraint enforcement)Для больших таблиц – индексы для ускорения наиболее типичных фильтров

Инструменты в помощь: missing index DMV и DTA (database tuning advisor)

Page 12: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Загрузка данныхПринципы/цели:

Быстрая загрузка данных С минимальной фрагментациейДополнительная информация в Fast Track 2.0 Guide

Загрузка кластерного индекса2 опции – загрузка напрямую, загрузка через дополнительную таблицу (staging)

Page 13: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Загрузка данныхЗагрузка кластерного индекса, вариант 1:

BULK INSERT напрямую в таблицуПолный набор данных должен помещаться в память для сортировки – максимальная производительностьВсе данные загружаются в единственной транзакции с BATCHSIZE = 0. Это предотвращает дробление страниц и лишнюю фрагментациюЗагрузка происходит последовательно (single threaded)

Page 14: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Загрузка данныхЗагрузка кластерного индекса, вариант 2:

Загрузка BULK INSERT последовательно или параллельно в пустую промежуточную таблицу – кластерный индексНенулевой размер в BATCHSIZE (подбирается, чтобы не было сортировки в TempDB) Далее единственный INSERT…SELECT с MAXDOP = 1 для предотвращения фрагментацииПозволяет достигать более высокой скорости загрузки на первоначальной стадии (если использовать несколько параллельных потоков)

Page 15: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

«Разделяй и властвуй» для больших объемов данных

Предварительно разбиваем данные по файлам по датеЗагружаем в несколько промежуточных таблиц одновременноЗагружаем каждую из таблиц как на предыдущем слайдеПоследовательно переключаем секций между промежуточными и основной таблицей

P1 P2 Pn

Final table

Staging tables

Load files

Page 16: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Функционал для улучшения производительностиДобавлено в SQL Server 2008

Сжатие данных и файлов резервного копированияОбработка запросов типа «звезда» (Star join)Обработка запросов типа few outer rowsВыровненные по секциям индексированные представления (partition aligned indexed views)

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

Добавлено в SQL Server 2008 R2Поддержка до 256 аппаратных потоковРеализация сжанитя Unicode

Page 17: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Сжатие данных2 типа: PAGE and ROW (страница и запись)Используйте PAGE для хранилищ данных

В среднем даёт 3X сжатие (диапазон 2-8X)Используйте для таблиц фактов и на огромных таблицах измеренийИзбегайте для небольших таблицУвеличение скорости, снижение кол-ва дисковых обращений, экономия местаВ SQL Server 2008 R2 добавлена реализация сжатия Юникода

Page 18: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Сжатие ЮникодаНаибольший эффект для языков, не изменяющих старший байт

Фактически делает тип однобайтовым в таком случае (менее эффективен для таких языков как китайский или японский)Например, использование для сжатия Unicode URLs (type nvarchar)Функционал доступен автоматически для новых таблиц SQL Server 2008 R2

Для миграции 2008 2008 R2 требуется обновить запись или перестроить индекс, чтобы «включить» такое сжатие

Page 19: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Запросы типа «звезда»Оптимизация обработки запросов типа «звезда»

select t.SalesTerritoryCountry, COUNT(*) SalesCount, ...from FactResellerSalesPart f, DimSalesTerritory twhere f.SalesTerritoryKey = t.SalesTerritoryKeyand t.SalesTerritoryCountry <> 'United States‘group by t.SalesTerritoryCountry;

Ускоряет обработку таких запросов на 30% в среднем и в некоторых случаях до 7X

Page 20: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Запросы типа «звезда»Практические рекомендации

Используйте схему типа «звезда» или «снежинка». Для нормализованных таблиц (3NF) преимущество минимальноИспользуйте целочисленный тип данных для ключевых колонок таблиц измерений для максимального эффектаДоступно только в редакции Enterprise и выше

Page 21: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Обработка Few Outer RowsSQL Server 2005 и ранее использует блочный алгоритм вложенных циклов (nested loop join)

Каждая страница данных обрабатывается только одним потоком

SQL Server 2008 использует отдельный поток для каждого «внешнего» ряда

Возможно использование всех доступных процессоров

Page 22: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Обработка Few Outer RowsНет необходимости переписывать запрос для обхода этого ограничения, т.е. вместо

SELECT ..., SUM(f.m) FROM f, ...WHERE f.date_key BETWEEN 20050101 AND 20050107GROUP BY ...

Можно использовать следующий вариант без потери производительности

SELECT ..., SUM(f.m) FROM f, dim_date dWHERE f.date_key = d.date_key

AND d.year = 2010 and d.week = 1 …GROUP BY ...

Page 23: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Обработка Few Outer RowsДля максимальной возможности распараллелить запрос, первый вариант предпочтителен (MAXDOP = MAX CPUs)

SELECT ..., SUM(f.m) FROM f, ...WHERE f.date_key BETWEEN 20050101 AND 20050107GROUP BY ...

А этот – будет ограничен 7 (количеством дней в неделе)

SELECT ..., SUM(f.m) FROM f, dim_date dWHERE f.date_key = d.date_key

AND d.year = 2010 and d.week = 1 …GROUP BY ...

Page 24: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Переключение секций при наличии индексированных представлений

Секция 1

Секция 2

Секция 3

Новая секция

таблицы фактов

Агрегат(P1)

Агрегат(P2)

Агрегат(P3)

Агрегат для новой секции

Секционированное индексированное представление (агрегат)

Секционированная таблица фактов

Переключение секций создаёт агрегаты для

секции

Page 25: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

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

Выравнивание индексированного представления по секциям позволяет

Переключать секции без перестройки всего представления (экономия времени)Такие представления могут быть использованы оптимизатором при создании плана запроса в SQL Server 2008Полный пример использования можно увидеть здесь

Page 26: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Поддержка до 15 000 секций

Добавлено в SQL Server 2008 SP2Функционал с ограничениями

По умолчанию недоступен, нужно включитьДетали в статье здесь

Примеры сценариев использованияМиграция с Oracle без изменения схемы секционированияСекционирование по дням и необходимость иметь более 3 лет данных в одной таблице

Page 27: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

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

-- таблица фактовF(dk1, dk2, dk3, m)

-- пример схемы для сводной-- таблицы или представленияF_1_2(dk1, dk2, m)

-- создаём представлениеCREATE VIEW F_1_2 WITH SCHEMABINDING AS SELECT dk1, dk2, SUM(m) as m, COUNT_BIG(*) as c FROM dbo.FGROUP BY dk1, dk2;-- Альтернатива – сводная таблицаSELECT dk1, dk2, SUM(m) as m INTO F_1_2 FROM dbo.F GROUP BY dk1, dk2;

-- пример переписывания запроса-- запрос данного видаSELECT F.dk1, SUM(F.m) as mFROM FGROUP BY F.dk1

-- может быть переписан какSELECT F.dk1, SUM(F.m) as mFROM F_1_2 as F WITH(NOEXPAND)GROUP BY F.dk1

-- Если F_1_2 – сводная таблица вместо представления необходимо убрать NOEXPAND hint

См. Mastering Data Warehouse Aggregates

by C. Adamson про этот метод

Page 28: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Поддержка 256 аппаратных потоков

Добавлено в версии SQL Server 2008 R2 Enterprise или выше

В основном для систем обработки транзакций (OLTP)Для хранилищ данных параллелизм (DOP)>32 как правило неэффективенОднако это позволяет поддерживать разнородную нагрузку на больших системах

По умолчанию DOP всегда ≤64 даже на больших системах

Override with OPTION(MAXDOP n)См. также SQL Server Parallel Data Warehouse

Page 29: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Управление MAXDOPСначала используйте настройку по умолчанию (‘max degree of parallelism’ sp_configure option = 0)В случае большого кол-ва CXPACKET waits установите значение на ½ или ¼ от доступных процессоров

sp_configure optionПодсказка OPTION(MAXDOP n)Регулятор ресурсов - один из удобных внешних механизмов управления этим параметром

Page 30: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Управление MAXDOPБолее низкие значения MAXDOP могут помочь повысить производительность путём

Уменьшения время ожидания ресурсов (доступные потоки)Уменьшения размера ожидаемого гранта памяти

Избегайте явного указания ‘max degree of parallelism’ >64

На практике DOP > 16 неэффективен

Page 31: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

SQL Server “Denali” CTP1

Скачать здесь!

Анонс

Page 32: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

SQL Server “Denali”CTP1 можно скачать по данной ссылкеПроект Apollo (функционал не доступен в CTP1)

Ускорение выполнения запросов хранилищ данных в несколько раз

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

Достигается с помощью Column store (новый тип индекса)Новые алгоритмы обработки данных (блочная обработка)

Page 33: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Проект Apollo

VertiPaq™ column store

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

Page 34: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Итоги Необходимые элементы хорошо спроектированного хранилища данных

Адекватный логический и физический дизайн базыВыбор и конфигурация аппаратного обеспечения для оптимальной производительностиИспользуйте возможности SQL Server 2008 и 2008 R2 для ускорения скорости выполнения DW запросов

Дополнительные решенияParallel Data WarehouseSQL Server “Denali” – проект Apollo

Page 36: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Обратная связь Ваше мнение очень важно для нас. Пожалуйста, оцените доклад, заполните анкету и сдайте ее при выходе из зала

Спасибо!

Page 37: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Вопросы Сессия: BI 303Борис Барышников

[email protected]

Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этого доклада

Page 38: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных
Page 39: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Официальные курсы и сертификация Microsoft

Более 300 официальных курсов Microsoft доступно в России. Официальные курсы можно прослушать только в авторизованных учебных центрах Microsoft

под руководством опытного сертифицированного инструктора Microsoftинтенсивное обучение с акцентом на практикуболее 80-и учебных центров более чем в 20-и городах России (+ дистанционные и выездные курсы)

Сертификат Microsoft - показатель квалификации ИТ-специалиста для работодателя .

• Microsoft предлагает гибкую систему сертификаций.

• Все курсы, учебные центры и центры тестирования: www.microsoft.com/rus/learning

40% Доказательство № 75

сертифицированных специалистов считают, что сертификация помогла им получить работу или повышение

57% Доказательство № 119

рекрутеров считают сертификацию сотрудников одним из критериев для повышения в должности

Page 40: Практика использования  Microsoft  SQL Server 2008 и 2008 R2 для систем хранилищ данных

Специальные предложенияСертификационный пакет со вторым шансом

Пакеты экзаменационных ваучеров со скидкой от 15 до 20% и бесплатной пересдачей («вторым шансом»). Все экзамены сдаются одним человеком.

Сэкономьте 15% на сертификации вашей ИТ-команды

Пакет из 10-и экзаменационных ваучеров со скидкой 15% для сотрудников ИТ-отдела. «Второй шанс» включен. Ваучеры можно произвольно распределять между сотрудниками.

Microsoft Certified Career ConferenceПервая 24-часовая глобальная виртуальная конференция с 18 ноября с 15.00 (моск. время) по 19 ноября 2010 г.Сессии по технологиям и построению карьерыСкидка 50% для сертифицированных специалистов Microsoft и студентов

Бесплатная подписка на TechNet для слушателей официальных курсов

Некоторые курсы по SharePoint, Windows 7; Windows Server 2008; SQL Server 2008

Детали: www.microsoft.com/rus/learning

С 22 ноября 2010 г. – подписка TechNet

бесплатно для слушателей курсов.

Количество ограничено!