Menganalisis Kebuntuan dengan SQL Server Profiler

Berlaku untuk: SQL Server Azure SQL Managed Instance

Gunakan SQL Server Profiler untuk mengidentifikasi penyebab kebuntuan. Kebuntuan terjadi ketika ada dependensi siklik antara dua utas atau lebih, atau proses, untuk beberapa set sumber daya dalam SQL Server. Dengan menggunakan SQL Server Profiler, Anda dapat membuat jejak yang merekam, memutar ulang, dan menampilkan peristiwa kebuntuan untuk analisis.

Untuk melacak peristiwa kebuntuan, tambahkan kelas peristiwa Grafik kebuntuan ke pelacakan. Kelas kejadian ini mengisi kolom data TextData dalam jejak dengan data XML tentang proses dan objek yang terlibat dalam kebuntuan. SQL Server Profiler dapat mengekstrak dokumen XML ke file XML kebuntuan (.xdl) yang dapat Anda lihat nanti di SQL Server Management Studio. Anda dapat mengonfigurasi SQL Server Profiler untuk mengekstrak peristiwa grafik Deadlock ke satu file yang berisi semua peristiwa grafik Kebuntuan, atau untuk memisahkan file. Ekstraksi ini dapat dilakukan dengan salah satu cara berikut:

  • Pada waktu konfigurasi pelacakan, menggunakan tab Pengaturan Ekstraksi Peristiwa . Perhatikan bahwa tab ini tidak muncul sampai Anda memilih peristiwa Grafik kebuntuan pada tab Pemilihan Peristiwa .

  • Menggunakan opsi Ekstrak peristiwa SQL Server pada menu File.

  • Peristiwa individual juga dapat diekstrak dan disimpan dengan mengklik kanan peristiwa tertentu dan memilih Ekstrak Data Peristiwa.

Grafik Kebuntuan

SQL Server Profiler dan SQL Server Management Studio menggunakan grafik tunggu kebuntuan untuk menggambarkan kebuntuan. Grafik tunggu kebuntuan berisi simpul proses, simpul sumber daya, dan tepi yang mewakili hubungan antara proses dan sumber daya. Komponen grafik tunggu ditentukan dalam tabel berikut:

Simpul proses
Utas yang melakukan tugas; misalnya, INSERT, UPDATE, atau DELETE.

Simpul sumber daya
Objek database; misalnya, tabel, indeks, atau baris.

Azure Stack Edge
Hubungan antara proses dan sumber daya. Tepi permintaan terjadi saat proses menunggu sumber daya. Tepi pemilik terjadi ketika sumber daya menunggu proses. Mode kunci disertakan dalam deskripsi tepi. Misalnya, Mode: X.

Simpul Proses Kebuntuan

Dalam grafik tunggu, simpul proses berisi informasi tentang proses. Tabel berikut menjelaskan komponen proses.

Komponen Definisi
Id proses server Pengidentifikasi proses server (SPID), pengidentifikasi yang ditetapkan server untuk proses yang memiliki kunci.
Server batch Id Pengidentifikasi batch server (SBID).
Id konteks eksekusi Pengidentifikasi konteks eksekusi (ECID). ID konteks eksekusi dari utas tertentu yang terkait dengan SPID tertentu.

ECID = {0,1,2,3, ... n}, di mana 0 selalu mewakili utas utama atau induk, dan {1,2,3, ... n} mewakili subthread.
Prioritas kebuntuan Prioritas kebuntuan untuk proses tersebut. Untuk informasi selengkapnya tentang nilai yang mungkin, lihat SET DEADLOCK_PRIORITY (Transact-SQL).
Log yang Digunakan Jumlah ruang log yang digunakan oleh proses.
Id Pemilik ID Transaksi untuk proses yang menggunakan transaksi dan saat ini menunggu kunci.
Deskriptor transaksi Arahkan ke deskriptor transaksi yang menjelaskan status transaksi.
Buffer input Buffer input dari proses saat ini, menentukan jenis peristiwa dan pernyataan yang dijalankan. Nilai yang mungkin termasuk:

Bahasa

RPC

Tidak ada
Pernyataan Jenis pernyataan. Potensi nilai:

NOP

PILIH

UPDATE

INSERT

DELETE

Tidak dikenal

Simpul Sumber Daya Kebuntuan

Dalam kebuntuan, dua proses masing-masing menunggu sumber daya yang dipegang oleh proses lainnya. Dalam grafik kebuntuan, sumber daya ditampilkan sebagai simpul sumber daya.