Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
База данных SQL в Microsoft Fabric
Возвращает строку для каждого исполнителя в системе. Дополнительные сведения о рабочих ролях см. в руководстве по архитектуре потоков и задач.
Note
Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_os_workers. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
| Название столбца | Тип данных | Description |
|---|---|---|
| адрес_работника | varbinary(8) | Адрес памяти исполнителя. |
| статус | int | Только для внутреннего применения. |
| is_preemptive | bit | 1 = исполнитель работает по расписанию с вытеснением. Любой исполнитель, запускающий внешний код, работает по расписанию с вытеснением. |
| is_fiber | bit | 1 = исполнитель работает с использованием упрощенных пулов. Дополнительные сведения см. в статье sp_configure (Transact-SQL). |
| is_sick | bit | 1 = работа исполнителя приостановлена при попытке получить спин-блокировку. Такое значение этого параметра может указывать на проблему конфликта в связи с объектом, к которому часто запрашивается доступ. |
| is_in_cc_exception | bit | 1 = рабочая роль обрабатывает исключение, не являющееся исключением SQL Server. |
| is_fatal_exception | bit | Указывает на получение этим исполнителем неустранимого исключения. |
| is_inside_catch | bit | 1 = исполнитель в настоящий момент обрабатывает исключение. |
| is_in_polling_io_completion_routine | bit | 1 = исполнитель в настоящий момент выполняет подпрограмму завершения для незавершенного ввода-вывода. Дополнительные сведения см. в разделе sys.dm_io_pending_io_requests (Transact-SQL). |
| context_switch_count | int | Количество переключений контекста планировщика, выполненных этим исполнителем. |
| pending_io_count | int | Количество физических операций ввода-вывода, выполненных этим исполнителем. |
| pending_io_byte_count | bigint | Общее число байтов для всех незавершенных физических вводов-выводов для этого исполнителя. |
| pending_io_byte_average | int | Среднее число байтов для всех физических вводов-выводов для этого исполнителя. |
| wait_started_ms_ticks | bigint | Момент времени в ms_ticks, когда данная рабочая роль перешла в состояние SUSPENDED. Вычтя это значение из поля ms_ticks в sys.dm_os_sys_info, можно получить время ожидания для этой рабочей роли в миллисекундах. |
| wait_resumed_ms_ticks | bigint | Момент времени в ms_ticks, когда данная рабочая роль перешла в состояние RUNNABLE. Вычтя это значение из поля ms_ticks в sys.dm_os_sys_info, можно получить время нахождения этой рабочей роли в очереди ожидания запуска. |
| task_bound_ms_ticks | bigint | Момент времени в ms_ticks, когда задача была связана с этой рабочей ролью. |
| worker_created_ms_ticks | bigint | Момент времени в ms_ticks, когда была создана эта рабочая роль. |
| exception_num | int | Номер ошибки последнего исключения, возникшего у этого исполнителя. |
| exception_severity | int | Серьезность последнего исключения, возникшего у этого исполнителя. |
| exception_address | varbinary(8) | Адрес кода, откуда было получено исключение |
| affinity | bigint | Сходство рабочих потоков. Соответствует сходству потока в sys.dm_os_threads (Transact-SQL). |
| state | nvarchar(60) | Состояние исполнителя. Может использоваться одно из следующих значений: INIT = исполнитель в настоящий момент инициализируется. RUNNING = исполнитель в настоящий момент выполняется, в режиме без приоритетного прерывания или с приоритетным прерыванием. RUNNABLE = исполнитель готов к запуску в соответствии с планировщиком. SUSPENDED = исполнитель в настоящий момент приостановлен, находится в режиме ожидания сигнала от события. |
| start_quantum | bigint | Время начала текущего выполнения этого исполнителя (в миллисекундах). |
| end_quantum | bigint | Время окончания текущего выполнения этого исполнителя (в миллисекундах). |
| last_wait_type | nvarchar(60) | Тип последнего ожидания. Список типов ожидания см. в разделе sys.dm_os_wait_stats (Transact-SQL). |
| return_code | int | Возвращенное значение от последнего ожидания. Может использоваться одно из следующих значений: 0 =УСПЕХ 3 = ТУПИК 4 = PREMATURE_WAKEUP 258 = ТАЙМ-АУТ |
| quantum_used | bigint | Только для внутреннего применения. |
| max_quantum | bigint | Только для внутреннего применения. |
| boost_count | int | Только для внутреннего применения. |
| tasks_processed_count | int | Количество задач, обработанных этим исполнителем. |
| fiber_address | varbinary(8) | Адрес памяти волокна, с которым связан этот исполнитель. NULL = SQL Server не настроен для использования упрощенных пулов. |
| адрес_задания | varbinary(8) | Адрес памяти текущей задачи. Дополнительные сведения см. в разделе sys.dm_os_tasks (Transact-SQL). |
| memory_object_address | varbinary(8) | Адрес памяти объекта памяти исполнителя. Дополнительные сведения см. в статье sys.dm_os_memory_objects (Transact-SQL). |
| thread_address | varbinary(8) | Адрес памяти потока, связанного с этим исполнителем. Дополнительные сведения см. в разделе sys.dm_os_threads (Transact-SQL). |
| signal_worker_address | varbinary(8) | Адрес памяти исполнителя, который последним подавал сигнал этому объекту. Дополнительные сведения см. в разделе sys.dm_os_workers. |
| scheduler_address | varbinary(8) | Адрес памяти планировщика. Дополнительные сведения см. в разделе sys.dm_os_schedulers (Transact-SQL). |
| processor_group | smallint | Сохраняет идентификатор группы процессоров, назначенный данному потоку. |
| pdw_node_id | int |
применимо к: Azure Synapse Analytics, система платформы аналитики (PDW) Идентификатор узла, на который находится это распределение. |
Замечания
Если значением состояния исполнителя является RUNNING, и исполнитель выполняется в режиме без приоритетного прерывания, адрес исполнителя совпадает со значением active_worker_address в sys.dm_os_schedulers.
Когда исполнитель, ожидающий события, получает сигнал, он помещается в начало очереди готовых к работе исполнителей. SQL Server разрешает делать это тысячу раз подряд, после чего рабочая роль помещается в конец очереди. Перемещение исполнителя в конец очереди имеет некоторые последствия для производительности.
Permissions
В SQL Server требуется разрешение VIEW SERVER STATE.
Для уровней "Премиум" Базы данных SQL требуется разрешение VIEW DATABASE STATE в базе данных. Для уровней "Стандартный" и "Базовый" Базы данных SQL требуется членство в роли Server Admin или учетная запись Azure Active Directory admin.
Разрешения для SQL Server 2022 и более поздних версий
Требуется VIEW разрешение на состояние производительности сервера на сервере.
Examples
Можно воспользоваться следующим запросом, чтобы определить, как долго исполнитель находился в состояниях SUSPENDED и RUNNABLE.
SELECT
t1.session_id,
CONVERT(varchar(10), t1.status) AS status,
CONVERT(varchar(15), t1.command) AS command,
CONVERT(varchar(10), t2.state) AS worker_state,
w_suspended =
CASE t2.wait_started_ms_ticks
WHEN 0 THEN 0
ELSE
t3.ms_ticks - t2.wait_started_ms_ticks
END,
w_runnable =
CASE t2.wait_resumed_ms_ticks
WHEN 0 THEN 0
ELSE
t3.ms_ticks - t2.wait_resumed_ms_ticks
END
FROM sys.dm_exec_requests AS t1
INNER JOIN sys.dm_os_workers AS t2
ON t2.task_address = t1.task_address
CROSS JOIN sys.dm_os_sys_info AS t3
WHERE t1.scheduler_id IS NOT NULL;
Вот результат.
session_id status command worker_state w_suspended w_runnable
---------- ---------- --------------- ------------ ----------- --------------------
4 background LAZY WRITER SUSPENDED 688 688
6 background LOCK MONITOR SUSPENDED 4657 4657
19 background BRKR TASK SUSPENDED 603820344 603820344
14 background BRKR EVENT HNDL SUSPENDED 63583641 63583641
51 running SELECT RUNNING 0 0
2 background RESOURCE MONITO RUNNING 0 603825954
3 background LAZY WRITER SUSPENDED 422 422
7 background SIGNAL HANDLER SUSPENDED 603820485 603820485
13 background TASK MANAGER SUSPENDED 603824704 603824704
18 background BRKR TASK SUSPENDED 603820407 603820407
9 background TRACE QUEUE TAS SUSPENDED 454 454
52 suspended SELECT SUSPENDED 35094 35094
1 background RESOURCE MONITO RUNNING 0 603825954
На выходе, если переменные w_runnable и w_suspended равны, они представляют время, которое исполнитель находится в состоянии SUSPENDED. Иначе переменная w_runnable представляет время, проведенное исполнителем в состоянии RUNNABLE. На выходе, сеанс 52 находится в состоянии SUSPENDED в течение 35,094 миллисекунд.