Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему SQLServerWaits

Содержание

ДокладчикЕвгений ХабаровDBA в одной и московских финансовых компанийНезависимый консультантКогда-то работал разработчикомEmail: sql@dev.msBlog: http://sql.dev.msTwitter: @gR4mm
Поговорим об ожиданиях…и очередяхЕвгений Хабаров ДокладчикЕвгений ХабаровDBA в одной и московских финансовых компанийНезависимый консультантКогда-то работал разработчикомEmail: sql@dev.msBlog: http://sql.dev.msTwitter: @gR4mm Наши спонсоры О чем этот доклад?Проблема, есть ли она?Ожидание - что это? Потоки и ресурсы Очереди Демо ПроблемаRUN QUERY Задача администратора Сделать так, чтобы все работало быстроДля этого потребуется:Локализовать проблемуНайти причину возникновенияИ устранить ее Как искать проблему?DMVPerfmonExtended EventsActivity monitorАнализ плановТОП-10 запросовSCOM / Zabbix etc.Анализ ожиданий СессииConnectionSPID (session_id)Scheduler 0Logical CPU 0Scheduler 1Logical CPU 1Scheduler 2Logical CPU 2Scheduler 3Logical Статусы сессииRUNNING – task выполняется в данный момент на каком-либо ядреТолько один Круговорот статусов сессииselect *from sys.dm_exec_requestswhere status = 'running'select *from sys.dm_exec_requestswhere status = Очереди Очереди Очереди Что такое ожидание?Объекты, которые разработчики использовали для своих нуждПоказывает, что именно ждет Инструментыsys.dm_os_waiting_taskssys.dm_exec_requestssys.dm_os_wait_statssys.dm_os_taskssys.sysprocessesТекущее состояниеИсторические данныеПараллелизмPerfMon – SQL Server: Wait StatisticsОбщее время wait_time_ms (RUNNIG >…> Не все ожидания одинаково полезны*BROKER_EVENTHANDLERBROKER_RECEIVE_WAITFORBROKER_TASK_STOPBROKER_TO_FLUSHBROKER_TRANSMITTERCHECKPOINT_QUEUECHKPTCLR_AUTO_EVENTCLR_MANUAL_EVENTCLR_SEMAPHOREDBMIRROR_DBM_EVENTDBMIRROR_EVENTS_QUEUEDBMIRROR_WORKER_QUEUEDBMIRRORING_CMDDIRTY_PAGE_POLLDISPATCHER_QUEUE_SEMAPHOREEXECSYNCFSAGENTFT_IFTS_SCHEDULER_IDLE_WAITFT_IFTSHC_MUTEXHADR_CLUSAPI_CALLHADR_FILESTREAM_IOMGR_IOCOMPLETIONHADR_LOGCAPTURE_WAITHADR_NOTIFICATION_DEQUEUEHADR_TIMER_TASKHADR_WORK_QUEUEKSOURCE_WAKEUPLAZYWRITER_SLEEPLOGMGR_QUEUEONDEMAND_TASK_QUEUEPWAIT_ALL_COMPONENTS_INITIALIZEDQDS_PERSIST_TASK_MAIN_LOOP_SLEEPQDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEPREQUEST_FOR_DEADLOCK_SEARCHRESOURCE_QUEUESERVER_IDLE_CHECKSLEEP_BPOOL_FLUSHSLEEP_DBSTARTUPSLEEP_DCOMSTARTUPSLEEP_MASTERDBREADYSLEEP_MASTERMDREADYSLEEP_MASTERUPGRADEDSLEEP_MSDBSTARTUPSLEEP_SYSTEMTASKSLEEP_TASKSLEEP_TEMPDBSTARTUPSNI_HTTP_ACCEPTSP_SERVER_DIAGNOSTICS_SLEEPSQLTRACE_BUFFER_FLUSHSQLTRACE_INCREMENTAL_FLUSH_SLEEPSQLTRACE_WAIT_ENTRIESWAIT_FOR_RESULTSWAITFORWAITFOR_TASKSHUTDOWNWAIT_XTP_HOST_WAITWAIT_XTP_OFFLINE_CKPT_NEW_LOGWAIT_XTP_CKPT_CLOSEXE_DISPATCHER_JOINXE_DISPATCHER_WAITXE_TIMER_EVENTИсточник: http://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/ Топ-ХPAGEIOLATCH_*PAGELATCH_*CXPACKETWRITELOGLCK_M_*RESOURCE_SEMAPHORE_QUERY_COMPILECMEMTHREAD ASYNC_NETWORK_IOOLEDBSOS_SCHEDULER_YIELDTRACEWRITEBACKUPIO/BACKUPBUFFERTHREADPOOL PAGEIOLATCH_XX где XX -SH – чтениеEX – записьRUN QUERYselect *from Sales.SalesOrderHeaderBuffer poolPAGE 14:1:4533Page not foundDISKPAGEIOLATCH_XX Причины PAGEIOLATCH_XX Необходимость чтения большого объема данныхОтсутствие необходимых индексовScan вместо seek’aНеоптимальные планыМедленная DEMO: PAGEIOLATCH_XX CXPACKETsp_configuremax degree of parallelismcost threshold for parallelismoption(MAXDOP N)Плохо, когда один из потоков «отстает» DEMO: CXPACKET PAGELATCH_XX TempDBCreate table #...Create table #...Create table #...Create table #...PFSGAMmdfPFSGAMndf PAGELATCH_XXПользовательские базыInsert в таблицу с identity полем (hot page)Небольшая таблица-очередь TempDBСтраницы распределения WRITELOGRUN QUERYInsert into Sales.SalesOrderHeader…mdfldfBUFFERCheckpoint(background)dataLog records DEMO: PAGELATCH_XX + WRITELOG DEMO: LCK_M_* DEMO: sp_AskBrent Спасибо!Blog: http://sql.dev.ms/Twitter: @gr4mmEmail: sql@dev.ms Ресурсыhttp://download.microsoft.com/download/4/7/a/47a548b9-249e-484c-abd7-29f31282b04d/Performance_Tuning_Waits_Queues.docPerformance_Tuning_Waits_Queues.dochttp://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/Wait statistics, or please tell me where it hurtshttp://blogs.msdn.com/b/psssql/archive/2009/11/03/the-sql-server-wait-type-repository.aspxThe SQL Server Wait
Слайды презентации

Слайд 2 Докладчик
Евгений Хабаров
DBA в одной и московских финансовых компаний
Независимый

ДокладчикЕвгений ХабаровDBA в одной и московских финансовых компанийНезависимый консультантКогда-то работал разработчикомEmail: sql@dev.msBlog: http://sql.dev.msTwitter: @gR4mm

консультант
Когда-то работал разработчиком





Email: sql@dev.ms
Blog: http://sql.dev.ms
Twitter: @gR4mm


Слайд 3 Наши спонсоры

Наши спонсоры

Слайд 4 О чем этот доклад?
Проблема, есть ли она?
Ожидание -

О чем этот доклад?Проблема, есть ли она?Ожидание - что это? Потоки и ресурсы Очереди Демо

что это? 
Потоки и ресурсы
Очереди
Демо


Слайд 5 Проблема
RUN QUERY

ПроблемаRUN QUERY

Слайд 6 Задача администратора
Сделать так, чтобы все работало быстро

Для

Задача администратора Сделать так, чтобы все работало быстроДля этого потребуется:Локализовать проблемуНайти причину возникновенияИ устранить ее

этого потребуется:

Локализовать проблему
Найти причину возникновения
И устранить ее


Слайд 7 Как искать проблему?
DMV
Perfmon
Extended Events
Activity monitor
Анализ планов
ТОП-10 запросов
SCOM /

Как искать проблему?DMVPerfmonExtended EventsActivity monitorАнализ плановТОП-10 запросовSCOM / Zabbix etc.Анализ ожиданий

Zabbix etc.


Анализ ожиданий


Слайд 8 Сессии
Connection
SPID (session_id)
Scheduler 0
Logical CPU 0

Scheduler 1
Logical CPU 1

Scheduler

СессииConnectionSPID (session_id)Scheduler 0Logical CPU 0Scheduler 1Logical CPU 1Scheduler 2Logical CPU 2Scheduler

2
Logical CPU 2

Scheduler 3
Logical CPU 3


Единовременно на одном планировщике

может быть только один активный таск. (Task state = RUNNING)

Слайд 9 Статусы сессии
RUNNING – task выполняется в данный момент

Статусы сессииRUNNING – task выполняется в данный момент на каком-либо ядреТолько

на каком-либо ядре
Только один task на одном ядре единовременно
SUSPENDED

– task ожидает некоторый ресурс
Дисковая подсистема
Сеть
Блокировки
Память
RUNNABLE – ресурс получен, task ожидает процессора

BACKGROUND – для фоновых процессов ( resource monitor, deadlock monitor)
SLEEPING - ожидание новых команд, работа не производится



Слайд 10 Круговорот статусов сессии
select *
from sys.dm_exec_requests
where status = 'running'
select

Круговорот статусов сессииselect *from sys.dm_exec_requestswhere status = 'running'select *from sys.dm_exec_requestswhere status

*
from sys.dm_exec_requests
where status = 'runnable'
select *
from sys.dm_os_waiting_tasks
select *
from sys.dm_exec_requests
where

status = ‘suspended'

Слайд 11 Очереди

Очереди

Слайд 12 Очереди

Очереди

Слайд 13 Очереди

Очереди

Слайд 14 Что такое ожидание?
Объекты, которые разработчики использовали для своих

Что такое ожидание?Объекты, которые разработчики использовали для своих нуждПоказывает, что именно

нужд
Показывает, что именно ждет сессия.
SQL сервер всегда отслеживает ожидания

с момент старта сервера, как только ожидание происходит, он увеличивает соответствующий счетчик.
Названия для типов ожиданий выбираются разработчиками на их усмотрение.
А все потому, что раньше надо было смотреть только на IO, блокировки и сеть
Соответственно, документация неполная



Слайд 15 Инструменты




sys.dm_os_waiting_tasks
sys.dm_exec_requests
sys.dm_os_wait_stats
sys.dm_os_tasks
sys.sysprocesses
Текущее состояние
Исторические данные
Параллелизм
PerfMon – SQL Server: Wait Statistics
Общее

Инструментыsys.dm_os_waiting_taskssys.dm_exec_requestssys.dm_os_wait_statssys.dm_os_taskssys.sysprocessesТекущее состояниеИсторические данныеПараллелизмPerfMon – SQL Server: Wait StatisticsОбщее время wait_time_ms (RUNNIG

время wait_time_ms (RUNNIG >…> RUNNIG )
Ожидание процессора (RUNNABLE >

RUNNING) - singnal_wait_time_ms
Ожидание ресурса = wait_time_ms - singnal_wait_time_ms

Extended Events – объект Wait_info


Слайд 16 Не все ожидания одинаково полезны*
BROKER_EVENTHANDLER
BROKER_RECEIVE_WAITFOR
BROKER_TASK_STOP
BROKER_TO_FLUSH
BROKER_TRANSMITTER
CHECKPOINT_QUEUE
CHKPT
CLR_AUTO_EVENT
CLR_MANUAL_EVENT
CLR_SEMAPHORE
DBMIRROR_DBM_EVENT
DBMIRROR_EVENTS_QUEUE
DBMIRROR_WORKER_QUEUE
DBMIRRORING_CMD
DIRTY_PAGE_POLL
DISPATCHER_QUEUE_SEMAPHORE
EXECSYNC
FSAGENT
FT_IFTS_SCHEDULER_IDLE_WAIT
FT_IFTSHC_MUTEX
HADR_CLUSAPI_CALL
HADR_FILESTREAM_IOMGR_IOCOMPLETION
HADR_LOGCAPTURE_WAIT
HADR_NOTIFICATION_DEQUEUE
HADR_TIMER_TASK
HADR_WORK_QUEUE
KSOURCE_WAKEUP
LAZYWRITER_SLEEP
LOGMGR_QUEUE
ONDEMAND_TASK_QUEUE
PWAIT_ALL_COMPONENTS_INITIALIZED
QDS_PERSIST_TASK_MAIN_LOOP_SLEEP
QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP
REQUEST_FOR_DEADLOCK_SEARCH
RESOURCE_QUEUE
SERVER_IDLE_CHECK
SLEEP_BPOOL_FLUSH
SLEEP_DBSTARTUP
SLEEP_DCOMSTARTUP
SLEEP_MASTERDBREADY
SLEEP_MASTERMDREADY
SLEEP_MASTERUPGRADED
SLEEP_MSDBSTARTUP
SLEEP_SYSTEMTASK
SLEEP_TASK
SLEEP_TEMPDBSTARTUP
SNI_HTTP_ACCEPT
SP_SERVER_DIAGNOSTICS_SLEEP
SQLTRACE_BUFFER_FLUSH
SQLTRACE_INCREMENTAL_FLUSH_SLEEP
SQLTRACE_WAIT_ENTRIES
WAIT_FOR_RESULTS
WAITFOR
WAITFOR_TASKSHUTDOWN
WAIT_XTP_HOST_WAIT
WAIT_XTP_OFFLINE_CKPT_NEW_LOG
WAIT_XTP_CKPT_CLOSE
XE_DISPATCHER_JOIN
XE_DISPATCHER_WAIT
XE_TIMER_EVENT

Источник: http://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/

Не все ожидания одинаково полезны*BROKER_EVENTHANDLERBROKER_RECEIVE_WAITFORBROKER_TASK_STOPBROKER_TO_FLUSHBROKER_TRANSMITTERCHECKPOINT_QUEUECHKPTCLR_AUTO_EVENTCLR_MANUAL_EVENTCLR_SEMAPHOREDBMIRROR_DBM_EVENTDBMIRROR_EVENTS_QUEUEDBMIRROR_WORKER_QUEUEDBMIRRORING_CMDDIRTY_PAGE_POLLDISPATCHER_QUEUE_SEMAPHOREEXECSYNCFSAGENTFT_IFTS_SCHEDULER_IDLE_WAITFT_IFTSHC_MUTEXHADR_CLUSAPI_CALLHADR_FILESTREAM_IOMGR_IOCOMPLETIONHADR_LOGCAPTURE_WAITHADR_NOTIFICATION_DEQUEUEHADR_TIMER_TASKHADR_WORK_QUEUEKSOURCE_WAKEUPLAZYWRITER_SLEEPLOGMGR_QUEUEONDEMAND_TASK_QUEUEPWAIT_ALL_COMPONENTS_INITIALIZEDQDS_PERSIST_TASK_MAIN_LOOP_SLEEPQDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEPREQUEST_FOR_DEADLOCK_SEARCHRESOURCE_QUEUESERVER_IDLE_CHECKSLEEP_BPOOL_FLUSHSLEEP_DBSTARTUPSLEEP_DCOMSTARTUPSLEEP_MASTERDBREADYSLEEP_MASTERMDREADYSLEEP_MASTERUPGRADEDSLEEP_MSDBSTARTUPSLEEP_SYSTEMTASKSLEEP_TASKSLEEP_TEMPDBSTARTUPSNI_HTTP_ACCEPTSP_SERVER_DIAGNOSTICS_SLEEPSQLTRACE_BUFFER_FLUSHSQLTRACE_INCREMENTAL_FLUSH_SLEEPSQLTRACE_WAIT_ENTRIESWAIT_FOR_RESULTSWAITFORWAITFOR_TASKSHUTDOWNWAIT_XTP_HOST_WAITWAIT_XTP_OFFLINE_CKPT_NEW_LOGWAIT_XTP_CKPT_CLOSEXE_DISPATCHER_JOINXE_DISPATCHER_WAITXE_TIMER_EVENTИсточник: http://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/

Слайд 17 Топ-Х
PAGEIOLATCH_*
PAGELATCH_*
CXPACKET
WRITELOG
LCK_M_*


RESOURCE_SEMAPHORE_QUERY_COMPILE
CMEMTHREAD
ASYNC_NETWORK_IO
OLEDB
SOS_SCHEDULER_YIELD
TRACEWRITE
BACKUPIO/BACKUPBUFFER
THREADPOOL

Топ-ХPAGEIOLATCH_*PAGELATCH_*CXPACKETWRITELOGLCK_M_*RESOURCE_SEMAPHORE_QUERY_COMPILECMEMTHREAD ASYNC_NETWORK_IOOLEDBSOS_SCHEDULER_YIELDTRACEWRITEBACKUPIO/BACKUPBUFFERTHREADPOOL

Слайд 18 PAGEIOLATCH_XX
где XX -
SH – чтение
EX – запись

RUN

PAGEIOLATCH_XX где XX -SH – чтениеEX – записьRUN QUERYselect *from Sales.SalesOrderHeaderBuffer poolPAGE 14:1:4533Page not foundDISKPAGEIOLATCH_XX

QUERY
select *
from Sales.SalesOrderHeader
Buffer pool
PAGE 14:1:4533
Page not found
DISK

PAGEIOLATCH_XX


Слайд 19 Причины PAGEIOLATCH_XX
Необходимость чтения большого объема данных
Отсутствие необходимых

Причины PAGEIOLATCH_XX Необходимость чтения большого объема данныхОтсутствие необходимых индексовScan вместо seek’aНеоптимальные

индексов
Scan вместо seek’a
Неоптимальные планы
Медленная дисковая подсистема
Недостаточный объем оперативной памяти

Плохо,

если занимает большую часть времени запроса.

Слайд 20 DEMO: PAGEIOLATCH_XX

DEMO: PAGEIOLATCH_XX

Слайд 21 CXPACKET
sp_configure
max degree of parallelism
cost threshold for parallelism
option(MAXDOP N)

Плохо,

CXPACKETsp_configuremax degree of parallelismcost threshold for parallelismoption(MAXDOP N)Плохо, когда один из потоков «отстает»

когда один из потоков «отстает»


Слайд 22 DEMO: CXPACKET

DEMO: CXPACKET

Слайд 23
PAGELATCH_XX
TempDB
Create table #...
Create table #...
Create table #...
Create

PAGELATCH_XX TempDBCreate table #...Create table #...Create table #...Create table #...PFSGAMmdfPFSGAMndf

table #...
PFS
GAM
mdf

PFS
GAM
ndf



Слайд 24 PAGELATCH_XX
Пользовательские базы
Insert в таблицу с identity полем (hot

PAGELATCH_XXПользовательские базыInsert в таблицу с identity полем (hot page)Небольшая таблица-очередь TempDBСтраницы

page)
Небольшая таблица-очередь

TempDB
Страницы распределения данных
Table-Valued Functions (PFS)
Системный объекты


Слайд 25 WRITELOG


RUN QUERY
Insert into Sales.SalesOrderHeader…
mdf
ldf
BUFFER

Checkpoint
(background)

data


Log records

WRITELOGRUN QUERYInsert into Sales.SalesOrderHeader…mdfldfBUFFERCheckpoint(background)dataLog records

Слайд 26 DEMO: PAGELATCH_XX + WRITELOG

DEMO: PAGELATCH_XX + WRITELOG

Слайд 27 DEMO: LCK_M_*

DEMO: LCK_M_*

Слайд 28 DEMO: sp_AskBrent

DEMO: sp_AskBrent

Слайд 29 Спасибо!
Blog: http://sql.dev.ms/
Twitter: @gr4mm
Email: sql@dev.ms

Спасибо!Blog: http://sql.dev.ms/Twitter: @gr4mmEmail: sql@dev.ms

  • Имя файла: sqlserverwaits.pptx
  • Количество просмотров: 104
  • Количество скачиваний: 0