Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
AlanDenton Member [скрыт] Откуда: Сообщений: 1004 |
Кто сталкивался с этим типом ожидания PWAIT_DIRECTLOGCONSUMER_GETNEXT? Как с ним бороться и нужно ли? Нормальной информации так и не смог найти нигде. Если что версия: Microsoft SQL Server 2016 SP1 - 13.0.4001.0 Enterprise На сервере работает репликация Сейчас это ожидание у меня в топ1. Запрос: SELECT TOP(20) wait_type , wait_time = CAST(wait_time_ms / 1000. AS DECIMAL(18,4)) , wait_resource = CAST((wait_time_ms - signal_wait_time_ms) / 1000. AS DECIMAL(18,4)) , wait_signal = CAST(signal_wait_time_ms / 1000. AS DECIMAL(18,4)) , wait_time_percent = CAST(100. * wait_time_ms / NULLIF(SUM(wait_time_ms) OVER (), 0) AS DECIMAL(18,2)) , waiting_tasks_count , max_wait_time = CAST(max_wait_time_ms / 1000. AS DECIMAL(18,4)) , avg_wait = CAST(wait_time_ms / 1000. / waiting_tasks_count AS DECIMAL(18,4)) , avg_wait_resource = CAST((wait_time_ms - signal_wait_time_ms) / 1000. / waiting_tasks_count AS DECIMAL(18,4)) , avg_wait_signal = CAST(signal_wait_time_ms / 1000. / waiting_tasks_count AS DECIMAL(18,4)) FROM sys.dm_os_wait_stats WHERE waiting_tasks_count > 0 AND 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 |
31 май 17, 11:35 [20526619] Ответить | Цитировать Сообщить модератору |
AlanDenton Member [скрыт] Откуда: Сообщений: 1004 |
Если что в последней книге Короткевича это ожидания считается системным и на него не обращяют внимание. Но все же. Интересно мнение что это? |
31 май 17, 11:39 [20526652] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8730 |
Т.к. 1. Это ожидание появилось в 2016 2. Оно связанно с чтением (а точнее с ожидание доступности) данных из лога Предположу, что оно появилось вместе с параллельным реду лога, и вызвано "синхронизацией" читающих потоков. ЗЫ Это все ИМХО, конечно |
||
31 май 17, 11:45 [20526687] Ответить | Цитировать Сообщить модератору |
Minamoto Member Откуда: Москва Сообщений: 1162 |
AlanDenton, Пол "наше все" Рэндал уже организовал целый справочник по ожиданиям. Там есть не все, но это - есть, с описанием: https://www.sqlskills.com/help/waits/pwait_directlogconsumer_getnext/ |
31 май 17, 11:46 [20526692] Ответить | Цитировать Сообщить модератору |
AlanDenton Member [скрыт] Откуда: Сообщений: 1004 |
Это вся уже читал в первую очередь. Но с чем могут быть связаны "when a thread that is reading from the transaction log is waiting for a log block to be supplied to it". Ключевое тут "log block to be supplied to it"... если кто прояснит неясность буду благодарен. |
31 май 17, 11:49 [20526712] Ответить | Цитировать Сообщить модератору |
Minamoto Member Откуда: Москва Сообщений: 1162 |
AlanDenton, мне кажется, я побуду капитаном очевидность, но речь о том, что поток, читающий журнал транзакций, ждет, когда в журнал будет сделана следующая запись. С чем связано ожидание следующей записи - вот тут, конечно, сказать ничего не могу, это либо просто поток, вечно читающий журнал, либо поток, читающий конкретную транзакцию и ждущий, когда она завершится, чтобы дочитать все блоки данных.
Рэндал, кстати, тоже включил в список исключаемых. Надо уже обновить перевод. |
||
31 май 17, 12:12 [20526832] Ответить | Цитировать Сообщить модератору |
AlanDenton Member [скрыт] Откуда: Сообщений: 1004 |
Minamoto, спасибо. Мне так кажется что "поток, читающий конкретную транзакцию и ждущий, когда она завершится, чтобы дочитать все блоки данных" близкое к истине. waiting_tasks_count между PWAIT_DIRECTLOGCONSUMER_GETNEXT и WRITELOG у меня совпадают примерно. Всем спасибо. Вопрос закрыт. |
31 май 17, 12:28 [20526885] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |