1 / 37

Методики оптимизации ожидания ресурсов (SQL Server Waits) в аналитических системах

SQL 2005 и SQL 2008. Методики оптимизации ожидания ресурсов (SQL Server Waits) в аналитических системах. Дмитрий Артемов dimaa@microsoft.com. Документация так себе. Что такое ожидание ?. Мы создали их для помощи в поиске проблем

adamma
Download Presentation

Методики оптимизации ожидания ресурсов (SQL Server Waits) в аналитических системах

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL 2005 и SQL 2008 Методики оптимизации ожидания ресурсов (SQL Server Waits) в аналитических системах Дмитрий Артемов dimaa@microsoft.com

  2. Документация так себе Что такое ожидание? • Мы создали их для помощи в поиске проблем • Там, давным давно (SQL 4.2) у нас были блокировки, сеть и операции ввода/вывода • Но со временем мы малость увлеклись • Имя ожидания – на усмотрение разработчика

  3. Как работает ожидание?

  4. Обычное дело для SELECT Мы знаем,что придется ждать Пример Понимает механику диспетчера SQLOS Ожиданиеприводит к вызову SignalObjectAndWait() В итоге все сводится к вызову WaitForSingleObject() илиSignalObjectAndWait() • SOS_EventAuto– «обертка» для объекта Windows Kernel Event

  5. Кооперативная многозадачность SQL Server • Voluntary switching is roughly equivalent to a thread ordering an item that isn't ready to go at a fast-food counter. Rather than hold up the queue of the other diners, the thread will step aside and let the next thread place its order (execute its routine) while the first thread's hamburger is being prepared. When the hamburger is ready, the first thread goes to the end of the ready queue of the priority level.«Inside Microsoft Windows 2000» David A. Solomon, Mark Russinovich • UMS implements a cooperative model. UMS relies on threads to voluntarily yield. UMS takes the approach it does in order to keep from involving the Windows kernel any more than absolutely necessary. In a system where worker threads can be counted on to yield when they should, a cooperative scheduler can actually be more efficient than a preemptive one because the scheduling process can be tailored to the specific needs of the application. UMS knows SQL Server's scheduling needs better than the operating system can be expected to.«The Guru's Guide to SQL Server Architecture and Internals» By Ken Henderson

  6. Как увидеть ожидания? Историческая статистика «Живая» информация Обломки прошлого Трассировка в SQL2008 Инструменты Счетчик Wait Statistics select er.session_id, er.wait_type from sys.dm_exec_requestser join sys.dm_exec_sessionses on er.session_id=es.session_id where es.is_user_process = 1 –-для выделения пользовательских процессов -- в sql server 2000 они всегда были SPID < 51, теперь могут быть любыми

  7. Sysprocesses – нужно или нет? • Показывает открытые транзакции в неактивных потоках • К тому же Sysprocessesпоказывает несколько строк для параллельных запросов • Однако можно сделать sys.dm_exec_requests join sys.dm_os_tasks

  8. Ну, начнем!

  9. Частые типы ожиданий Блокировки (механизм синхронизации) BUF latch - синхронизация Намек: Системная таблица или аллокация Намек: Ваше приложение Намек: задержка I/O Ресурс В сумме ~50 типов ожидания Намек: Сеть или ваше приложение

  10. Некоторые типы не сигнализируют о проблемах Следовало бы назвать «ожидания нет» BOL называет их Queue Waits Нормально для SQL CLR

  11. CXPACKET – миф и реальность Чаще всего встречается в DW и DSS типахприложений Sync Не торопитесь с выводами

  12. CXPACKET • Параллелизм реализуется на уровне компонентов запроса В системе 2 процессора!

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

  14. Еще пара слов про пара… • SQL Server строит параллельные планы горизонтально разделяя входные данные на примерно равные наборы • Каждый кусок назначается своему CPU • А затем производится выполнение одинаковых операций (агрегирование, соединение, …) на каждом куске

  15. non BUFFER Latch Sync Latch class Те же режимы как и для работы с буфером (KP, SH, UP, EX, DT)

  16. FGCB_ADD_REMOVE latch Sync SQL Server Engine INSERT “Нужно приращение” LATCH_EX: FGCB_ADD_REMOVE Нужно место mydb.mdf INSERT Нужно место FGCB Autogrow Нужно место INSERT Мораль: Используйте «Instant file initialization»но… оно не работает для журнала Нужно место INSERT Нужно оценить свободное место LATCH_SH: FGCB_ADD_REMOVE

  17. SOS_SCHEDULER_YIELD Forced I/O, Lock, Latch ************************ * * BEGIN STACK DUMP: * 10/17/09 15:51:52 spid 0 * * Non-yielding Scheduler * ************************ Может быть preemptive поток

  18. Resource THREADPOOL Применим к любой задаче TDS Login Если ждали слишком долго 10 сек по умолчанию - Login Timeout Request = task + worker

  19. Как насчет ожиданий на I/O Sync Log Writer COMMIT TRAN Запись Log Buffer WRITELOG Mylog.ldf Log Cache Log Buffer INSERT LOGBUFFER Запрос на Log Buffer Все буферы заняты Copy model Resource Mylog.ldf и .mdf SQLTrace File Resource IO_COMPLETION Page I/O Sort I/O DISKIO_SUSPEND File VDI App Создание файлов БД Engine Workers ASYNC_IO_COMPLETION BACKUP WITH SNAPSHOT Zero Log Files Backup media Sync Resource

  20. Запросы, память и RESOURCE semaphore Hash и sort Resource sys.dm_os_memory_brokers DBCC MEMORYSTATUS компиляции С появлением в SQL 2005 брокеров, управляющих распределением памяти, кеш запросов и кеш компиляций стали конкурентами

  21. Resource_Semaphore

  22. Filtered statistics

  23. Pre-emptive Waits External Код может быть сложнее чем просто API вызов ************************ * * BEGIN STACK DUMP: * 10/17/09 15:51:52 spid 0 * * Non-yielding Scheduler * ************************

  24. Что можно увидеть? ~190 типов

  25. Почему плохо использовать Profiler через GUI? • Потому что он вызывает внешние компоненты • Потому что процессоры занимаются в основном переключением контекста, а рабочие процессы сидят на ожидании TRACEWRITE

  26. Расширенные события и ожидания См. dm_xe_map_values Начало и окончание Duration, Total, Max

  27. Есть и другие “ожидания” “Почему не урезается журнал” Плохо написанная DLL PRECONNECT статус Ручное управление backoffsвsys.dm_os_spinlock_stats

  28. Огласите весь список, пожалуйста! • См заголовочный файл в исходниках • Нет исходников? См. sys.dm_xe_map_valuesдля SQL Server 2008 • Список в документации (http://msdn.microsoft.com/en-us/library/ms179984.aspx) • KB 822101только протипы для SQL 2000 и раньше The Wait Type Repository Blog • Развитие Repository • Новые «открытия» • Комментарии • Использовать блог для обновления BOL • Размещение в блоге сценариев и доп. информации

  29. Ресурсы

  30. Appendix

  31. What does MDW tell you about I/O Waits sync reads, sorts, SQLTrace I/O, load CLR assembly Buffer Pool I/O for pages Backups, Recovery, DBM WRITELOG wait time = Log Flush Wait (perfmon) LOGBUFFER is just waiting on folks waiting on WRITELOG MDW - Management Data Warehouse

  32. The mapping has changed KB 822101 wrong for 2005 and 2008

  33. What’s About These? Forced Resource External Sync Hot stored proc in SQL Server 2005

  34. Прошу вас заполнить форму с оценкой сессии!

  35. Официальные курсы и сертификация Microsoft • Более 300 официальных курсов Microsoft доступно в России. • Официальные курсы можно прослушать только в авторизованных учебных центрах Microsoft • под руководством опытного сертифицированного инструктора Microsoft • интенсивное обучение с акцентом на практику • более 80-и учебных центров более чем в 20-и городах России (+ дистанционные и выездные курсы) • Сертификат Microsoft - показатель квалификации ИТ-специалиста для работодателя . • Microsoft предлагает гибкую систему сертификаций. • Все курсы, учебные центры и центры тестирования: www.microsoft.com/rus/learning 40 57 % % Доказательство № 75 Доказательство № 119 • рекрутеров считают сертификацию сотрудников одним из критериев для повышения в должности • сертифицированных специалистов считают, что сертификация помогла им получить работу или повышение

  36. Специальные предложения • Сертификационный пакет со вторым шансом • Пакеты экзаменационных ваучеров со скидкой от 15 до 20% и бесплатной пересдачей («вторым шансом»). Все экзамены сдаются одним человеком. • Сэкономьте 15% на сертификации вашей ИТ-команды • Пакет из 10-и экзаменационных ваучеров со скидкой 15% для сотрудников ИТ-отдела. «Второй шанс» включен. Ваучеры можно произвольно распределять между сотрудниками. • Microsoft Certified Career Conference • Первая 24-часовая глобальная виртуальная конференция с 18 ноября с 15.00 (моск. время) по 19 ноября 2010 г. • Сессии по технологиям и построению карьеры • Скидка 50% для сертифицированных специалистов Microsoft и студентов • Бесплатная подписка на TechNet для слушателей официальных курсов • Некоторые курсы по SharePoint, Windows 7; WindowsServer 2008; SQL Server 2008 • Детали: www.microsoft.com/rus/learning С 22 ноября 2010 г. – подписка TechNet бесплатно для слушателей курсов. Количество ограничено!

  37. Спасибо! Вопросы?

More Related