Комментарии 13
НЛО прилетело и опубликовало эту надпись здесь
О чем этот комментарий?
Ничуть не умаляя заслуги переводчика — по ссылке статья, немного больше раскрывающая тему. Ну и да — она от января 2008 года :)
+ по видам ожиданий, занимающих 80% статьи — msdn.microsoft.com/ru-ru/library/ms179984.aspx, но там машинный перевод, тут лучше, наверное (этот блок статьи не читал, так как читал в оригинале на MSDN)
+ по видам ожиданий, занимающих 80% статьи — msdn.microsoft.com/ru-ru/library/ms179984.aspx, но там машинный перевод, тут лучше, наверное (этот блок статьи не читал, так как читал в оригинале на MSDN)
Я не претендую на полное раскрытие темы. Объясню, почему перевел эту статью — когда сам анализирую ожидания, использую запрос из оригинала и использую комментарии автора именно этой статьи для того, чтобы понять, в чем может заключаться причина возникновения ожиданий.
Статья из MSDN (на которую, кстати, есть ссылка в переводе) содержит общее описание, по нему не всегда понятно, куда смотреть и что делать.
Статья по ссылке msdn.microsoft.com/ru-ru/magazine/cc135978.aspx содержит много полезной информации, но тема анализа ожиданий в ней не раскрыта почти совсем.
Статья из MSDN (на которую, кстати, есть ссылка в переводе) содержит общее описание, по нему не всегда понятно, куда смотреть и что делать.
Статья по ссылке msdn.microsoft.com/ru-ru/magazine/cc135978.aspx содержит много полезной информации, но тема анализа ожиданий в ней не раскрыта почти совсем.
А что там раскрывать? Запрос на получение ожиданий, в том числе в % там есть, найти описание этих видов ожиданий труда не составляет.
Но получив, допустим, ожидание по IO или процессору >50% нужно понять, какими запросами оно сформировано, проанализировать планы их выполнения и т.д., ну а эти вопросы раскрыты в статье, в сжатом, но достаточном для применения основного инструмента объеме. Эта статья хороша тем, что там все в одном месте, если ссылка не нужна — минусуйте, если информация нужная — наоборот.
А может, там действительно оборудование не вывозит, что тоже может быть :)
Но получив, допустим, ожидание по IO или процессору >50% нужно понять, какими запросами оно сформировано, проанализировать планы их выполнения и т.д., ну а эти вопросы раскрыты в статье, в сжатом, но достаточном для применения основного инструмента объеме. Эта статья хороша тем, что там все в одном месте, если ссылка не нужна — минусуйте, если информация нужная — наоборот.
А может, там действительно оборудование не вывозит, что тоже может быть :)
В защиту перевода перед статьей из MSDN.
Все таки Paul S Randal — это Руссинович в MS SQL Server, бывший разработчик MS SQL, а ныне пишущий доступные для понимания очень правильные вещи. В общем, авторитетный товарищ. :)
Поэтому перевод его статьи это всегда приятно и полезно.
Все таки Paul S Randal — это Руссинович в MS SQL Server, бывший разработчик MS SQL, а ныне пишущий доступные для понимания очень правильные вещи. В общем, авторитетный товарищ. :)
Поэтому перевод его статьи это всегда приятно и полезно.
Наверное уже раз так в 20-тый захожу этот пост читать. Еще раз спасибо за полезный материал. Жаль, что нельзя второй раз плюсануть.
Прикреплю тут два скрипта, вдруг кому будет еще полезным.
1. Очистка sys.dm_os_wait_stats:
2. И слегка модифицированный запрос на выборку статистики ожиданий:
Прикреплю тут два скрипта, вдруг кому будет еще полезным.
1. Очистка sys.dm_os_wait_stats:
DBCC SQLPERF("sys.dm_os_wait_stats", CLEAR)
2. И слегка модифицированный запрос на выборку статистики ожиданий:
SELECT TOP(20)
wait_type
, wait_time = wait_time_ms / 1000.
, wait_resource = (wait_time_ms - signal_wait_time_ms) / 1000.
, wait_signal = signal_wait_time_ms / 1000.
, waiting_tasks_count
, percentage = 100.0 * wait_time_ms / SUM(wait_time_ms) OVER ()
, avg_wait = wait_time_ms / 1000. / waiting_tasks_count
, avg_wait_resource = (wait_time_ms - signal_wait_time_ms) / 1000. / [waiting_tasks_count]
, avg_wait_signal = signal_wait_time_ms / 1000.0 / waiting_tasks_count
FROM sys.dm_os_wait_stats
WHERE [waiting_tasks_count] > 0
AND max_wait_time_ms > 0
AND [wait_type] NOT IN (
N'BROKER_EVENTHANDLER', N'BROKER_RECEIVE_WAITFOR',
N'BROKER_TASK_STOP', N'BROKER_TO_FLUSH',
N'BROKER_TRANSMITTER', N'CHECKPOINT_QUEUE',
N'CHKPT', N'CLR_AUTO_EVENT',
N'CLR_MANUAL_EVENT', N'CLR_SEMAPHORE',
N'DBMIRROR_DBM_EVENT', N'DBMIRROR_EVENTS_QUEUE',
N'DBMIRROR_WORKER_QUEUE', N'DBMIRRORING_CMD',
N'DIRTY_PAGE_POLL', N'DISPATCHER_QUEUE_SEMAPHORE',
N'EXECSYNC', N'FSAGENT',
N'FT_IFTS_SCHEDULER_IDLE_WAIT', N'FT_IFTSHC_MUTEX',
N'HADR_CLUSAPI_CALL', N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
N'HADR_LOGCAPTURE_WAIT', N'HADR_NOTIFICATION_DEQUEUE',
N'HADR_TIMER_TASK', N'HADR_WORK_QUEUE',
N'KSOURCE_WAKEUP', N'LAZYWRITER_SLEEP',
N'LOGMGR_QUEUE', N'ONDEMAND_TASK_QUEUE',
N'PWAIT_ALL_COMPONENTS_INITIALIZED',
N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP',
N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP',
N'REQUEST_FOR_DEADLOCK_SEARCH', N'RESOURCE_QUEUE',
N'SERVER_IDLE_CHECK', N'SLEEP_BPOOL_FLUSH',
N'SLEEP_DBSTARTUP', N'SLEEP_DCOMSTARTUP',
N'SLEEP_MASTERDBREADY', N'SLEEP_MASTERMDREADY',
N'SLEEP_MASTERUPGRADED', N'SLEEP_MSDBSTARTUP',
N'SLEEP_SYSTEMTASK', N'SLEEP_TASK',
N'SLEEP_TEMPDBSTARTUP', N'SNI_HTTP_ACCEPT',
N'SP_SERVER_DIAGNOSTICS_SLEEP', N'SQLTRACE_BUFFER_FLUSH',
N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
N'SQLTRACE_WAIT_ENTRIES', N'WAIT_FOR_RESULTS',
N'WAITFOR', N'WAITFOR_TASKSHUTDOWN',
N'WAIT_XTP_HOST_WAIT', N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG',
N'WAIT_XTP_CKPT_CLOSE', N'XE_DISPATCHER_JOIN',
N'XE_DISPATCHER_WAIT', N'XE_TIMER_EVENT'
)
ORDER BY [wait_time_ms] DESC
было бы неплохо добавить CXCONSUMER
https://dba.stackexchange.com/questions/231558/how-does-cxpackets-relates-to-cxconsumer-wait-types
Я не тормоз, я просто не заметил нового комментария :)
В целом было бы неплохо актуализировать перевод, да. Но я не придумал пока способа это сделать, ибо из одной статьи у автора разросся целый раздел на сайте, где каждому отдельному ожиданию посвящена отдельная страница (На примере вашего: www.sqlskills.com/help/waits/cxconsumer).
А конкретно этому посвящена ещё и запись в блоге, т.к. ожидание было добавлено по просьбе самого автора этого поста: www.sqlskills.com/blogs/paul/cxconsumer-wait-type-history-and-what-you-need-to-know
И добавлено в SQL Server 2016, т.е. после появления этого перевода )
В целом было бы неплохо актуализировать перевод, да. Но я не придумал пока способа это сделать, ибо из одной статьи у автора разросся целый раздел на сайте, где каждому отдельному ожиданию посвящена отдельная страница (На примере вашего: www.sqlskills.com/help/waits/cxconsumer).
А конкретно этому посвящена ещё и запись в блоге, т.к. ожидание было добавлено по просьбе самого автора этого поста: www.sqlskills.com/blogs/paul/cxconsumer-wait-type-history-and-what-you-need-to-know
И добавлено в SQL Server 2016, т.е. после появления этого перевода )
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Статистика ожиданий SQL Server'а или пожалуйста, скажите мне, где болит