Bagikan melalui


Menganalisis kebuntuan dengan SQL Server Profiler

Berlaku untuk: SQL ServerAzure SQL Managed Instance

Gunakan SQL Server Profiler untuk mengidentifikasi penyebab kebuntuan. Kebuntuan terjadi ketika terdapat dependensi siklik antara dua atau lebih utas atau proses pada suatu himpunan 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 jejak. 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 Deadlock, atau ke file terpisah. Ekstraksi ini dapat dilakukan dengan salah satu cara berikut:

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

  • Menggunakan opsi Extract SQL Server Events 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 menjelaskan 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 Deskripsi
Simpul proses Utas yang melakukan tugas; misalnya, INSERT, UPDATE, atau DELETE.
Simpul sumber daya Objek database; misalnya, tabel, indeks, atau baris.
Pinggir Hubungan antara proses dan sumber daya. Titik permintaan terjadi ketika sebuah 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 tersebut. Tabel berikut menjelaskan komponen proses.

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

ECID = { 0, 1, 2, 3, ... n }, di mana 0 selalu mewakili utas utama atau induk, dan { 1, 2, 3, ... n } mewakili subthreads.
Prioritas Jalan Buntu Prioritas deadlock untuk proses tersebut. Untuk informasi selengkapnya tentang kemungkinan nilai, lihat MENGATUR DEADLOCK_PRIORITY.
Log Yang Digunakan Jumlah ruang log yang digunakan oleh proses.
Id Pemilik ID Transaksi untuk proses yang menggunakan transaksi dan saat ini menunggu di kunci.
Deskriptor transaksi Penunjuk 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
Pernyataan Jenis pernyataan. Kemungkinan nilai adalah:

NOP
PILIH
PEMUTAKHIRAN
MASUKKAN
MENGHAPUS
Tidak diketahui

Simpul sumber daya yang mengalami kebuntuan

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