SQL Server 2008 memiliki beberapa cara untuk mengidentifikasi proses dan kueri yang terlibat dalam kebuntuan.
-
Jika kebuntuan mudah direproduksi, frekuensinya lebih tinggi dan Anda dapat membuat profil SQL server (Anda memiliki akses dan biaya kinerja di server ketika profiler diaktifkan) menggunakan SQL Profiler akan memberi Anda tampilan grafis kebuntuan yang bagus. Halaman ini memiliki semua informasi yang Anda perlu menggunakan grafik kebuntuanhttp://sqlmag.com/ database-performance-tuning/gathering-deadlock-information-deadlock-graph
-
Sebagian besar waktu mereproduksi kebuntuan itu sulit, atau itu terjadi di lingkungan produksi di mana kami tidak ingin melampirkan Profiler ke dalamnya dan memengaruhi kinerja.
Saya akan menggunakan kueri ini untuk mendapatkan kebuntuan:
SELECT
xed.value('@timestamp', 'datetime') as Creation_Date,
xed.query('.') AS Extend_Event
FROM
(
SELECT CAST([target_data] AS XML) AS Target_Data
FROM sys.dm_xe_session_targets AS xt
INNER JOIN sys.dm_xe_sessions AS xs
ON xs.address = xt.event_session_address
WHERE xs.name = N'system_health'
AND xt.target_name = N'ring_buffer'
) AS XML_Data
CROSS APPLY Target_Data.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData(xed)
ORDER BY Creation_Date DESC
Saya TIDAK akan menggunakan (NOLOCK) untuk memperbaiki kebuntuan. Itu adalah lereng yang licin dan menyembunyikan masalah aslinya.