sys.dm_os_tasks (T-SQL)
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Mengembalikan satu baris untuk setiap tugas yang aktif dalam instans SQL Server. Tugas adalah unit dasar eksekusi di SQL Server. Contoh tugas termasuk kueri, login, keluar, dan tugas sistem seperti aktivitas pembersihan hantu, aktivitas titik pemeriksaan, penulis log, aktivitas pengulangan paralel. Untuk informasi selengkapnya tentang tugas, lihat Panduan Arsitektur Utas dan Tugas.
Catatan
Untuk memanggil ini dari Azure Synapse Analytics atau Analytics Platform System (PDW), gunakan nama sys.dm_pdw_nodes_os_tasks. Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
task_address | varbinary(8) | Alamat memori objek. |
task_state | nvarchar(60) | Status tugas. Bisa jadi salah satu dari yang berikut: TERTUNDA: Menunggu utas pekerja. RUNNABLE: Dapat dijalankan, tetapi menunggu untuk menerima kuantum. BERJALAN: Saat ini berjalan pada penjadwal. DITANGGUHKAN: Memiliki pekerja, tetapi sedang menunggu acara. SELESAI: Selesai. Terjebak dalam spinlock. |
context_switches_count | int | Jumlah pengalihan konteks penjadwal yang telah diselesaikan tugas ini. |
pending_io_count | int | Jumlah I/Os fisik yang dilakukan oleh tugas ini. |
pending_io_byte_count | bigint | Jumlah byte total I/Os yang dilakukan oleh tugas ini. |
pending_io_byte_average | int | Jumlah byte rata-rata I/Os yang dilakukan oleh tugas ini. |
scheduler_id | int | ID penjadwal induk. Ini adalah handel untuk informasi penjadwal untuk tugas ini. Untuk informasi selengkapnya, lihat sys.dm_os_schedulers (Transact-SQL). |
session_id | smallint | ID sesi yang terkait dengan tugas. |
exec_context_id | int | ID konteks eksekusi yang terkait dengan tugas. |
request_id | int | ID permintaan tugas. Untuk informasi lebih lanjut, lihat sys.dm_exec_requests (Transact-SQL). |
worker_address | varbinary(8) | Alamat memori pekerja yang menjalankan tugas. NULL = Tugas sedang menunggu pekerja dapat dijalankan, atau tugas baru saja selesai berjalan. Untuk informasi selengkapnya, lihat sys.dm_os_workers (Transact-SQL). |
host_address | varbinary(8) | Alamat memori host. 0 = Hosting tidak digunakan untuk membuat tugas. Ini membantu mengidentifikasi host yang digunakan untuk membuat tugas ini. Untuk informasi selengkapnya, lihat sys.dm_os_hosts (Transact-SQL). |
parent_task_address | varbinary(8) | Alamat memori tugas yang merupakan induk objek. |
pdw_node_id | int | Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW) Pengidentifikasi untuk simpul tempat distribusi ini aktif. |
Izin
Pada SQL Server dan SQL Managed Instance, memerlukan VIEW SERVER STATE
izin.
Pada tujuan layanan SQL Database Basic, S0, dan S1, dan untuk database di kumpulan elastis, akun admin server, akun admin Microsoft Entra, atau keanggotaan dalam ##MS_ServerStateReader##
peran server diperlukan. Pada semua tujuan layanan SQL Database lainnya, izin VIEW DATABASE STATE
pada database, atau keanggotaan dalam ##MS_ServerStateReader##
peran server diperlukan.
Izin untuk SQL Server 2022 dan yang lebih baru
Memerlukan izin TAMPILKAN STATUS PERFORMA SERVER pada server.
Contoh
J. Memantau permintaan paralel
Untuk permintaan yang dijalankan secara paralel, Anda akan melihat beberapa baris untuk kombinasi yang sama (<session_id>,< request_id).> Gunakan kueri berikut untuk menemukan Konfigurasi tingkat maksimum Opsi Konfigurasi Server paralelisme untuk semua permintaan aktif.
Catatan
Request_id unik dalam sesi.
SELECT
task_address,
task_state,
context_switches_count,
pending_io_count,
pending_io_byte_count,
pending_io_byte_average,
scheduler_id,
session_id,
exec_context_id,
request_id,
worker_address,
host_address
FROM sys.dm_os_tasks
ORDER BY session_id, request_id;
B. Mengaitkan ID sesi dengan utas Windows
Anda bisa menggunakan kueri berikut untuk mengaitkan nilai ID sesi dengan ID utas Windows. Anda kemudian dapat memantau performa utas di Monitor Performa Windows. Kueri berikut ini tidak mengembalikan informasi untuk sesi yang sedang tidur.
SELECT STasks.session_id, SThreads.os_thread_id
FROM sys.dm_os_tasks AS STasks
INNER JOIN sys.dm_os_threads AS SThreads
ON STasks.worker_address = SThreads.worker_address
WHERE STasks.session_id IS NOT NULL
ORDER BY STasks.session_id;
GO
Lihat juga
Tampilan Manajemen Dinamis Terkait Sistem Operasi SQL Server (Transact-SQL)
Panduan Arsitektur Utas dan Tugas