МАСШТАБИРОВАНИЕ OLTP ПРИЛОЖЕНИЙ: Дмитрий Артемов Старший консультант dimaa@microsoft.com Проектирование приложений и оптимизация серверной части Новые.

Презентация:



Advertisements
Похожие презентации
Администрирование информационных систем Лекция 4. Система управления базами данных.
Advertisements

Учебный курс Технологии и средства разработки корпоративных систем Лекция 1 Открытые системы. Клиент и сервер Лекции читает кандидат технических наук,
Оптимизация производительности информационных систем Баркетов Павел Технический директор Компания «Софтпоинт»
Создание облачной инфраструктуры в Международном университете природы, общества и человека «Дубна» Проректор по информатизации и инновационной деятельности.
Технические возможности. Наши цели Максимальная гибкость Максимальная скорость считывания и обработки данных Стабильность работы Максимальная простота.
Производительность систем на основе RDBMS ORACLE Учебный центр «ELTC» апреля 2010г Владислав Франц.
Распределенная обработка информации Разработано: Е.Г. Лаврушиной.
Решения виртуализации для IT Платонов Евгений. Технологические тенденции архитектуры x86 Многоядерные процессоры развиваются 2 ядра в , 4 ядра в.
Выполнили: Мартышкин А. И. Кутузов В. В., Трояшкин П. В., Руководитель проекта – Мартышкин А. И., аспирант, ассистент кафедры ВМиС ПГТА.
Системы управления базами данных. Выполнила: ученица 9 «Г» класса Леонова Анна Проверил: учитель информатики Воронин Сергей Анатольевич Выполнила: ученица.
Владимир Костюков, АлтГТУ АлтГТУ им И. И. Ползунова Распределенная система мониторинга и диспетчерезации процессов гетерогенной среды.
Неограниченный простор для реорганизации БД Киев Подсистема «Дело-DB Реорганизатор» для Системы «ДЕЛО»
Анализ данных и интеграция информационных систем Станислав Чистяков Старший Консультант 5 апреля 2011 года, гостиница «Золотое кольцо»
OLAP и OLTP системы OLTP – оперативная транзакционная обработка данных OLAP – оперативная аналитическая обработка данных.
Построение масштабируемых систем на платформе Microsoft Windows Datacenter и Microsoft.Net Добровольский Алексей Заместитель директора департамента информационных.
Раздел 3 Сетевые модели. Тема 3.1 Понятие сетевой модели. Архитектура сети определяет основные элементы сети, характеризует ее общую логическую организацию,
Защита баз данных. Повестка дня Реалии сегодняшнего дня … Источники атак Уязвимости СУБД Что делать ? Кто поможет ? DbProtect – новое предлагаемое решение.
Машина для баз данных Oracle Exadata как один из основных компонентов современного ЦОД Александр Штакал Oracle СНГ (Беларусь)
М одели распределенных баз данных. Корпоративные (или intranet) сети являются сетями уровня предприятия, которые можно подключать к сети Internet. Они.
Технология модели «клиент-сервер». Роли Компьютер, управляющий тем или иным ресурсом, принято называть сервером этого ресурса Компьютер, желающий воспользоваться.
Транксрипт:

МАСШТАБИРОВАНИЕ OLTP ПРИЛОЖЕНИЙ: Дмитрий Артемов Старший консультант Проектирование приложений и оптимизация серверной части Новые возможности SQL Server 2012

Аннотация SQL Server многократно доказал возможность поддержки самых нагруженных OLTP приложений SQL Server 2012 предлагает дополнительные возможности в части масштабируемости и производительности Возможные подходы по оптимизации ПО и серверной части для обеспечения масштабируемости

План Особенности OLTP нагрузки Принципы построения OLTP приложений Что определяет и что мешает масштабируемости SQL Server 2008 R2 - обеспечение производительности и масштабируемости SQL Server обеспечение производительности и масштабируемости SQL Server 2012 Distributed replay для тестирования (регулярного, при обновлении, проверке совместимости,…) Вертикальное масштабирование - "тяжелое железо" Заключение

Особенности OLTP нагрузки Обычно организуется бизнес приложениями Интенсивные запись и чтение Относительно «мелкие» вставки и обновления Высокая интенсивность транзакций: десятки тысяч в секунду Транзакции обычно коротки: захватывают 1–3 таблицы Иногда транзакции реализованы многоступенчатыми: например для финансовых приложений Работа с относительно небольшими объемами данных

Принципы построения приложений Логическое проектирова ние Физическое проектирова ние ER модель Индексы

Что следует учитывать при проектировании Любое приложение требует качественного проектирования, высоко нагруженное – особенно Качественный логический (E-R Model) и физический (индексы) дизайн – верный путь к производительности SQL Server работает с наборами данных, перебирать индивидуальные записи – путь к проблемам Помимо качественного проектирования нужно помнить, что БД требует обслуживания Обновление статистики Обслуживание индексов Для облегчения работы можно использовать DTA, но думать все равно придется Множественные соединения -> риск некачественных планов Промежуточные таблицы часто работают быстрее Теперь о физическом дизайне...

Что следует учитывать при физическом проектировании Изменения физического дизайна могут быть вызваны Требованиями производительности Требованиями доступности Требованиями разграничения доступа Требованиями аудита По возможности следует разделять файлы данных и журналы транзакций Не пожалейте время на анлиз работы/использования индексов Sys.dm_db_index_... Дисковая активность OLTP приложений требует от стойки большого числа операций ввода\вывода в секунду Дисковая активность аналитических приложений требует от дисковой стойки большого объема ввода\вывода (МБ\Сек) Смешанные приложения требуют и того и другого 1 ядро способно перемолоть до 200 Мб\сек 1 диск (классический) способен обеспечить операций ввода\вывода в секунду Канал Диск-Контроллер-HBA-Процессор должен иметь соответствующую мощность

Рекомендации по кластерным индексам Хороши для ранговых запросов Разумно создавать на часто используемых полях, участвующих в запросе в форме (JOIN и WHERE с указанием =,, BETWEEN) Если возврат невелик, некластерный индекс также эффективен Предпочтителен на узких, монотонных, редко изменяемых полях с невысокой повторяемостью данных Ничего не дается даром: Обновления реорганизуют таблицу (page split) Негативное влияние на производительность Со временем фрагментация может нарастать (GUID – идеальный пример)

Рекомендации по некластерным индексам Создавайте для полей, часто участвующих в поиске Используйте на узких полях с невысокой повторяемостью Используйте на foreign key constraints (для поддержки join) Проверьте возможность использования «покрывающих» индексов Проверьте возможность использования included полей Не забывайте: стоимость сопровождения Интенсивные обновления требуют дополнительных усилий по актуализации индексов Рассмотрите возможность удаления индексов с небольших таблиц

План Особенности OLTP нагрузки Принципы построения OLTP приложений Что определяет и что мешает масштабируемости SQL Server 2008 R2 - обеспечение производительности и масштабируемости SQL Server обеспечение производительности и масштабируемости SQL Server 2012 Distributed replay для тестирования (регулярного, при обновлении, проверке совместимости,…) Вертикальное масштабирование - "тяжелое железо" Заключение

Узкое место Транзакц ии работают медленне е Транзакц ия удержива ет ресурсы Плохое масштаб и- рование Что определяет и что мешает масштабируемости Измерения Интенсивность транзакций Число одновременно работающих пользователей Объем данных и темпы роста объемов Ресурсы ЦПУ Память Ввод\в ывод Сеть Основной подход в проектировании и оптимизации: разделяй и властвуй

Типичные проблемы перегруженного CPU Симптомы Компиляция и рекомпиляция планов Plan reuse < 90% - предмет для анализа Параллельные планы исполнения Ожидания типа CXPACKET > 10% от суммарного времени ожидания Большое число runnable tasks или значительные ожидания SOS_SCHEDULER_YIELD Причины Запросы не параметризированы Неэффективные планы Недостаточное использование хранимых процедур (большинство запросов отсылаются напрямую) MAXDOP > 1 Статистика устарела Trace flag 2371 для SQL Server 2008 R2 SP1 Массивные сканирования Как результат неэффективных планов Как результат устаревшей статистики Изменения настроек SET внутри SP

Типичные проблемы перегруженной стойки Симптомы Высокое значение времени отклика дисковой подсистемы (> 30 msec) для «шпиндельных» устройств В числе первых находятся ожидания - ASYNCH_IO_COMPLETION, IO_COMPLETION, LOGMGR, WRITELOG, PAGEIOLATCH_x Причины Массивные сканирования (для некачественных планов) Отсутствие покрывающих индексов Смешанный характер приложения: Одна и та же БД обслуживает OLTP и аналитику Чрезмерная нагрузка на TempDB Недостаток шпинделей, узкий канал через HBA

Типичные проблемы блокировок Симптомы Высокие значения ожиданий на блокировку записей или latch Видны при мониторинге sp_configure blocked process threshold и Profiler Blocked process Report Наиболее значимые ожидания групп LCK_x. Видны по данным sys.dm_os_wait_stats. Причины Завышенный уровень изоляции Высокие затраты на обслуживание индексов Эскалация блокировок Низкая производительность подсистемы ввода\вывода Проблема генерации последовательных номеров

Типичные проблемы использования памяти Симптомы Показатель Page life expectancy < 300 сек Для серверов с большим объемом памяти и гораздо большее значение может быть тревожным SQL Cache hit ratio < 99% Lazy writes/sec постоянно активны Ошибки Out of memory Причины Слишком много массивных сканирований (I/O) Неоптимальные планы Внешнее (от других процессов) давление по памяти

План Особенности OLTP нагрузки Принципы построения OLTP приложений Что определяет и что мешает масштабируемости SQL Server 2008 R2 - обеспечение производительности и масштабируемости SQL Server обеспечение производительности и масштабируемости SQL Server 2012 Distributed replay для тестирования (регулярного, при обновлении, проверке совместимости,…) Вертикальное масштабирование - "тяжелое железо" Заключение

Средства обеспечения производительности и масштабируемости в среде SQL Server 2008 R2 Оптимизация планов запросов Plan guides Optimize for Unknown Указания по эскалации блокировок Resource governor Развитые средства диагностики – Xevent, DMVs Поддержка более чем 64 процессоров Динамическая привязка процессоров (affinity - программная или аппаратная) Поддержка «горячей» замены процессоров Сжатие данных Особенно, если есть проблемы со вводом\выводом Секционирование До секций Snapshot Isolation, RCSI Utility Control Point для группового мониторинга серверов

Plan Guide Направить оптимизатор в верном направлении с фиксированным планом Обеспечивает стабильность поведения План можно извлечь напрямую из кеша При невозможности применения запрос все равно выполняется Использовать при невозможности изменить приложение Простой пример SELECT TOP 1 * FROM Sales.SalesOrderHeader ORDER BY OrderDate DESC; = = N'SELECT TOP 1 * FROM Sales.SalesOrderHeader ORDER BY OrderDate = = = = N'OPTION (MAXDOP 1)';

Optimize for Unknown OPTIMIZE FOR UNKNOWN Указатель велит оптимизатору рассматривать запрос, как если бы ему не передавали параметров Помогает решить проблему создания некачественных планов для определенных значений SELECT * FROM t WHERE col or col2 ORDER BY col1 OPTION (OPTIMIZE FOR UNKNOWN))

Управление эскалацией Перед отключением эскалации нужно проверить действительно ли она – причина проблем Эскалацию отключать следует на уровне объекта или таблицы Разрешите выполнить эскалацию на уровень секции ALTER TABLE T1 SET (LOCK_ESCALATION = AUTO); Может приводить к невиданным ранее Deadlockам! При эскалации на уровне секции эскалация на уровне таблицы не происходит

Resource Governor Преимущества Прогнозируемое качество услуг Предотвращает run-away запросы Контролирует «недисциплинированные» приложения Обеспечение сценариев DW & Консолидации SQL Server 2008 RG Группы нагрузки связываются с Ресурсным пулом Динамическое изменение групп и пулов Мониторинг ресурсов в реальном времени До 20 ресурсных пулов (64 в SQL Server 2012) SQL Server 2008 Min Memory 10% Max Memory 20% Max CPU 20% Min Memory 10% Max Memory 20% Max CPU 20% Admin Workload Backup Admin Tasks OLTP Workload OLTP Activity Report Workload Ad-hoc Reports Executive Reports High Max CPU 90% Application Pool Admin Pool

Extended Events (XEvent) Высокопроизводительный и расширяемый механизм трассировки событий Динамический сбор данных при возникновении событий Интегрирован с ETW (Event Tracing for Windows) Позволяет выяснить взаимосвязь между событиями Windows и приложениями третьих фирм SQL Server способен создавать сотни перехватываемых событий Позволяет (в том числе) набирать статистику ожиданий на уровне сессии/индивидуальной команды

План Особенности OLTP нагрузки Принципы построения OLTP приложений Что определяет и что мешает масштабируемости SQL Server 2008 R2 - обеспечение производительности и масштабируемости SQL Server обеспечение производительности и масштабируемости SQL Server 2012 Distributed replay для тестирования (регулярного, при обновлении, проверке совместимости,…) Вертикальное масштабирование - "тяжелое железо" Заключение

SQL Server 2012 – Availability groups Распределение нагрузки по нескольким серверам Оперативная обработка Отчетность Администрирование (резервные копии, DBCC,…)

Расширение числа Online операций в SQL Server 2012 Добавление not-NULL поля с указанным DEFAULT ALTER TABLE ADD COLUMN DEFAULT Операции CREATE, ALTER и DROP INDEX поддерживают ONLINE режим для таблиц/индексов с BLOB типами данных Online операции Больше операций от прикладного слоя, меньше блокировок, выше производительность

Максимальное число секций

15,000 секций в SQL Server 2012

План Особенности OLTP нагрузки Принципы построения OLTP приложений Что определяет и что мешает масштабируемости SQL Server 2008 R2 - обеспечение производительности и масштабируемости SQL Server обеспечение производительности и масштабируемости SQL Server 2012 Distributed replay для тестирования (регулярного, при обновлении, проверке совместимости,…) Вертикальное масштабирование - "тяжелое железо" Заключение

Тестирование приложений Более тщательное тестирование производительности\ функциональности Способно определить потенциальные несовместимости версий, не распознаваемые Upgrade Advisor: Тестирование ad-hoc T-SQL, создаваемых прикладным слоем Тестирование фактического исполнения T-SQL, не только синтаксис Тестирование конфигурации разграничения доступа Может включать настройки уровня операционной системы Определение различий в планах, длительности и результатах Определение использования недокументированных объектов/возможностей Определение очень редких, но возможных случаев, когда новая версия не отрабатывает запрос или меняет поведение запроса, но (пока) не документирована Не является обязательным для всех приложений, но рекомендуется для Критичных приложений Сложных приложений Приложений, в которых запросы в основном создаются вне SQL Server и/или динамически

Тестовая среда Изменение ПерехватПерехват Воспроизведение (до) Воспроизведение Воспроизведение (после ) Воспроизведение СравнениеОтчетСравнениеОтчет Тестирование приложений Файл трассировки

План Особенности OLTP нагрузки Принципы построения OLTP приложений Что определяет и что мешает масштабируемости SQL Server 2008 R2 - обеспечение производительности и масштабируемости SQL Server обеспечение производительности и масштабируемости SQL Server 2012 Distributed replay для тестирования (регулярного, при обновлении, проверке совместимости,…) Вертикальное масштабирование - "тяжелое железо" Заключение

Основные компоненты Дисковая подсистема Сервер Сетевой адаптер Память Сетевая инфраструктура Размещение файлов БД HBA Задача – построить сбалансированную систему SQL Server – только часть уравнения. Конфигурация должна масштабироваться.

Память LP 0 LP 1LP 2LP 3 LP 4 LP 5LP 6LP 7 Концепция - NUMA При увеличении числа процессоров, скорость шины начинает ограничивать производительность Symmetric Multiprocessor Architecture Non-Uniform Memory Access Local Memory Access Foreign Memory Access Foreign memory access > local memory access

Конфигурация дисковой подсистемы Тенденция За последние 10 лет емкость дисков выросла в 100 раз При этом время доступа снизилось только в 10 раз Конфигурация нагруженных систем должна учитывать не только емкость, но интенсивность и характер нагрузки Solid State Disks становятся все более популярными Конфигурация Масштабирование посредством увеличения числа HBA, дисков При использовании рекомендованного RAID 10 используйте HBA, способные выполнять одновременное чтение с дисков зеркала Для балансировки нагрузки следует использовать multipathing HBA Queue Depth – значение умолчания - 32 часто слишком мало Конфигурация должна обеспечивать малое время отклика < 10 msec Для OLTP важно IOPs Для аналитических систем важно MB\Sec Один процессор способен потребить 200 MB\sec

Сетевая инфраструктура Тенденции Gigabit – теперь стандарт Сетевые карты 10GBit Ethernet доступны для использования – особенно востребованы для iSCSI Полоса пропускания часто не является проблемой Узким местом часто является нехватка мощности для параллельной обработки сетевых прерываний Конфигурация Используйте Windows Server 2008 R2 Предлагает распределенную обработку DPC на множестве процессоров Рекомендуется по одной сетевой карте для NUMA узла; максимально ядер на сетевую карту Используйте Adapter teaming Используйте Windows Server 2008 R2 для доступа к новому функционалу

Что мы можем – SQL Server в крупнейших инсталляциях КатегорияМетрика Самая большая БД80 TB Самая большая таблица20 TB Суммарно данных у одного заказчика2.5 PB Максимальное число транзакций в секунду на одну БД 36,000 Самая производительная дисковая подсистема в промышленной эксплуатации 18 GB/sec Самый быстрый куб «реального времени»15 sec latency Скорость загрузки 1TB20 minutes Самый большой куб4.2 TB

Заключение SQL Server и Windows вместе обеспечивают масштабируемую среду для поддержания самых нагруженных OLTP приложений Качественное проектирование (и тестирование) – путь к надлежащей масштабируемости

v v Спасибо, Вопросы