Практика использования Microsoft SQL Server 2008 и 2008 R2 для...
description
Transcript of Практика использования Microsoft SQL Server 2008 и 2008 R2 для...
Практика использования Microsoft SQL Server 2008 и 2008 R2 для систем хранилищ данныхБорис БарышниковSenior Program ManagerMicrosoft Corp.
BI 303
Содержание Основные принципы хранилищ данных (Data Warehousing – DW)Логический и физический дизайн базы
Некоторые элементы дизайна и конфигурации
Загрузка данныхВозможности SQL Server 2008 и 2008 R2 в области хранилищ данных для ускорения скорости выполнения запросовАнонс возможностей SQL Server “Denali”
О докладчикеВ Microsoft Corp. чуть более 6 лет
Всё время в команде SQL Server EngineРаботал с различными компонентами и технологиями движка SQL Server
В 2008 версии руководил проектом создания регулятора ресурсов
В настоящее время работаю над новыми возможностями сервера для улучшения предсказуемости времени выполнения запросов
Основные принципы DWФункции хранилища данных
Депозитарий данных для поддержки тщательного анализа данных и создания отчётов
Источником данных в DW часто являются многочисленные базы обработки транзакций (OLTP)Например:
Продажи
Склад Системы обработки транзакций
Стадия подготов
киDW
Отчёты и
анализ
Логический дизайнНаиболее распространёнными являются схемы «звезда» и «снежинка»
Sales
Customer
Store
Territory
Product Date
Country
Таблица фактов
Таблица измерений
Измерение по схеме «снежинка»
Принципы моделирования подобных схем можно найти в The Data Warehouse Toolkitby Ralph Kimball, 2002.
Логический дизайн - практика
Используйте схему по типу «звезда» или «снежинка»Избегайте длинных строк, большого объема двоичных данных или колонок типа uniqueidentifier в таблице фактовИспользуйте целочисленные типы для ключевых колонок таблиц измеренийИзбегайте указания точности выше, чем необходимо в типах numeric (напр., (15,4) vs. (38,4))
Физический дизайнРеализация физической структуры базы для оптимальной производительностиХороший физический дизайн – сложный и трудоёмкий процессГлавные шаги
Выбор расположения файлов и файловых групп на диске для вашей системы I/OВыбор оптимального секционирования таблицИспользование PAGE compression для таблиц фактов
Конфигурация файлов/групп для систем хранилищ данныхПринципы: быстрый
последовательный доступ I/O, простота создания и управления большими таблицами
Каждый файл отдельный дискВсе файлы одна группа Все таблицы в эту файловую группуFile1
File2
File32…
File Group 1
Конфигурация файлов/групп для систем хранилищ данныхИзбегайте использования более 32
файлов в одной группеИзвестная проблема производительности в настоящий момент
Если у вас более 32 физических дисков, сгруппируйте их в логические, используя средства ОС или SAN
Далее используйте логические устройства как описано вышеБолее подробно в SQL Server Fast Track guideДля больших объемов данных, см. также Parallel Data Warehouse
Дизайн индексовДля таблиц фактов
Используйте clustered index on DateKey columnЕсли таблица > ~50GB, также секционируйте её по DateKey (напр., по месяцам)DateKey в формате YYYYMMDD, e.g. 20101117Используйте PAGE compressionБез дополнительных индексов (если не требуются point lookups)
Как правило признак смешанного использования системы
Дизайн индексовДля таблиц измерений
Для маленьких таблиц – не используйте индексы кроме тех, что обеспечивают гарантии целостности данных (constraint enforcement)Для больших таблиц – индексы для ускорения наиболее типичных фильтров
Инструменты в помощь: missing index DMV и DTA (database tuning advisor)
Загрузка данныхПринципы/цели:
Быстрая загрузка данных С минимальной фрагментациейДополнительная информация в Fast Track 2.0 Guide
Загрузка кластерного индекса2 опции – загрузка напрямую, загрузка через дополнительную таблицу (staging)
Загрузка данныхЗагрузка кластерного индекса, вариант 1:
BULK INSERT напрямую в таблицуПолный набор данных должен помещаться в память для сортировки – максимальная производительностьВсе данные загружаются в единственной транзакции с BATCHSIZE = 0. Это предотвращает дробление страниц и лишнюю фрагментациюЗагрузка происходит последовательно (single threaded)
Загрузка данныхЗагрузка кластерного индекса, вариант 2:
Загрузка BULK INSERT последовательно или параллельно в пустую промежуточную таблицу – кластерный индексНенулевой размер в BATCHSIZE (подбирается, чтобы не было сортировки в TempDB) Далее единственный INSERT…SELECT с MAXDOP = 1 для предотвращения фрагментацииПозволяет достигать более высокой скорости загрузки на первоначальной стадии (если использовать несколько параллельных потоков)
«Разделяй и властвуй» для больших объемов данных
Предварительно разбиваем данные по файлам по датеЗагружаем в несколько промежуточных таблиц одновременноЗагружаем каждую из таблиц как на предыдущем слайдеПоследовательно переключаем секций между промежуточными и основной таблицей
P1 P2 Pn
…
Final table
Staging tables
Load files
Функционал для улучшения производительностиДобавлено в SQL Server 2008
Сжатие данных и файлов резервного копированияОбработка запросов типа «звезда» (Star join)Обработка запросов типа few outer rowsВыровненные по секциям индексированные представления (partition aligned indexed views)
Независимо от версииИспользование сводных таблиц и индексированных представлений для запросов агрегирования данных
Добавлено в SQL Server 2008 R2Поддержка до 256 аппаратных потоковРеализация сжанитя Unicode
Сжатие данных2 типа: PAGE and ROW (страница и запись)Используйте PAGE для хранилищ данных
В среднем даёт 3X сжатие (диапазон 2-8X)Используйте для таблиц фактов и на огромных таблицах измеренийИзбегайте для небольших таблицУвеличение скорости, снижение кол-ва дисковых обращений, экономия местаВ SQL Server 2008 R2 добавлена реализация сжатия Юникода
Сжатие ЮникодаНаибольший эффект для языков, не изменяющих старший байт
Фактически делает тип однобайтовым в таком случае (менее эффективен для таких языков как китайский или японский)Например, использование для сжатия Unicode URLs (type nvarchar)Функционал доступен автоматически для новых таблиц SQL Server 2008 R2
Для миграции 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
Запросы типа «звезда»Практические рекомендации
Используйте схему типа «звезда» или «снежинка». Для нормализованных таблиц (3NF) преимущество минимальноИспользуйте целочисленный тип данных для ключевых колонок таблиц измерений для максимального эффектаДоступно только в редакции Enterprise и выше
Обработка Few Outer RowsSQL Server 2005 и ранее использует блочный алгоритм вложенных циклов (nested loop join)
Каждая страница данных обрабатывается только одним потоком
SQL Server 2008 использует отдельный поток для каждого «внешнего» ряда
Возможно использование всех доступных процессоров
Обработка 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 ...
Обработка 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 ...
Переключение секций при наличии индексированных представлений
Секция 1
Секция 2
Секция 3
Новая секция
таблицы фактов
Агрегат(P1)
Агрегат(P2)
Агрегат(P3)
Агрегат для новой секции
Секционированное индексированное представление (агрегат)
Секционированная таблица фактов
Переключение секций создаёт агрегаты для
секции
Индексированные представления выровненные по секциямПрактика использования
Выравнивание индексированного представления по секциям позволяет
Переключать секции без перестройки всего представления (экономия времени)Такие представления могут быть использованы оптимизатором при создании плана запроса в SQL Server 2008Полный пример использования можно увидеть здесь
Поддержка до 15 000 секций
Добавлено в SQL Server 2008 SP2Функционал с ограничениями
По умолчанию недоступен, нужно включитьДетали в статье здесь
Примеры сценариев использованияМиграция с Oracle без изменения схемы секционированияСекционирование по дням и необходимость иметь более 3 лет данных в одной таблице
Использование сводных таблиц и индексированных представлений для запросов агрегирования данных
-- таблица фактов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 про этот метод
Поддержка 256 аппаратных потоков
Добавлено в версии SQL Server 2008 R2 Enterprise или выше
В основном для систем обработки транзакций (OLTP)Для хранилищ данных параллелизм (DOP)>32 как правило неэффективенОднако это позволяет поддерживать разнородную нагрузку на больших системах
По умолчанию DOP всегда ≤64 даже на больших системах
Override with OPTION(MAXDOP n)См. также SQL Server Parallel Data Warehouse
Управление MAXDOPСначала используйте настройку по умолчанию (‘max degree of parallelism’ sp_configure option = 0)В случае большого кол-ва CXPACKET waits установите значение на ½ или ¼ от доступных процессоров
sp_configure optionПодсказка OPTION(MAXDOP n)Регулятор ресурсов - один из удобных внешних механизмов управления этим параметром
Управление MAXDOPБолее низкие значения MAXDOP могут помочь повысить производительность путём
Уменьшения время ожидания ресурсов (доступные потоки)Уменьшения размера ожидаемого гранта памяти
Избегайте явного указания ‘max degree of parallelism’ >64
На практике DOP > 16 неэффективен
SQL Server “Denali” CTP1
Скачать здесь!
Анонс
SQL Server “Denali”CTP1 можно скачать по данной ссылкеПроект Apollo (функционал не доступен в CTP1)
Ускорение выполнения запросов хранилищ данных в несколько раз
Плавная деградация для остальных запросов и интеграция с обычными запросами
Достигается с помощью Column store (новый тип индекса)Новые алгоритмы обработки данных (блочная обработка)
Проект Apollo
VertiPaq™ column store
Демонстрация
Итоги Необходимые элементы хорошо спроектированного хранилища данных
Адекватный логический и физический дизайн базыВыбор и конфигурация аппаратного обеспечения для оптимальной производительностиИспользуйте возможности SQL Server 2008 и 2008 R2 для ускорения скорости выполнения DW запросов
Дополнительные решенияParallel Data WarehouseSQL Server “Denali” – проект Apollo
Ресурсы Fast Track 2.0 GuideParallel Data WarehouseПереключение секций при наличии индексированных представленийПоддержка 15000 секцийData loading performance guideMS Connect
«Книга жалоб и предложений»Microsoft SQL Server “Denali” CTP1
Обратная связь Ваше мнение очень важно для нас. Пожалуйста, оцените доклад, заполните анкету и сдайте ее при выходе из зала
Спасибо!
Вопросы Сессия: BI 303Борис Барышников
Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этого доклада
Официальные курсы и сертификация Microsoft
Более 300 официальных курсов Microsoft доступно в России. Официальные курсы можно прослушать только в авторизованных учебных центрах Microsoft
под руководством опытного сертифицированного инструктора Microsoftинтенсивное обучение с акцентом на практикуболее 80-и учебных центров более чем в 20-и городах России (+ дистанционные и выездные курсы)
Сертификат Microsoft - показатель квалификации ИТ-специалиста для работодателя .
• Microsoft предлагает гибкую систему сертификаций.
• Все курсы, учебные центры и центры тестирования: www.microsoft.com/rus/learning
40% Доказательство № 75
сертифицированных специалистов считают, что сертификация помогла им получить работу или повышение
57% Доказательство № 119
рекрутеров считают сертификацию сотрудников одним из критериев для повышения в должности
Специальные предложенияСертификационный пакет со вторым шансом
Пакеты экзаменационных ваучеров со скидкой от 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
бесплатно для слушателей курсов.
Количество ограничено!