Diedit: Mengapa sesi pelaporan diblokir tetapi menunggu dengan PAGELATCH_*
, dan bukan LCK_M_
jenis menunggu terkait?
Saya sebelumnya berasumsi bahwa SQL server hanya akan melaporkan sesi pemblokiran di kolom blocking_session_Id. Jika sesi diblokir sedang menunggu kunci logis dan bukan yang lain seperti a PAGELATCH_*
.
sql-server
sql-server-2014
optimization
locking
wait-types
Pixelated
sumber
sumber
Jawaban:
Anda menggunakan
sp_WhoIsActive
prosedur Adam Machanic , bukan fasilitas SQL Server bawaan. Prosedur Adam melaporkan semua penyebab pemblokiran yang 'menarik', bukan hanya pemblokiran kunci. Informasi yang mendasarinya berasal dari berbagai sumber, termasuk sysprocesses , sys.dm_exec_requests , dan sys.dm_os_waiting_tasks .Suatu tugas dapat menunggu hal-hal lain selain kunci. Mungkin dapat, misalnya, untuk memperoleh kunci eksklusif pada baris pada halaman, tetapi kemudian masih harus menunggu untuk mendapatkan kait halaman eksklusif (karena tugas lain telah mengunci halaman yang sama dalam mode yang tidak kompatibel).
Dalam contoh Anda,
PAGELATCH_EX
kait halaman eksklusif ada pada data biasa atau halaman indeks, bukan halaman PFS, GAM, SGAM, DCM, atau BCM, seperti yang ditunjukkan oleh (*) di akhir wait_info .Anda dapat menemukan dokumentasi (entri blog) untuk di
sp_WhoIsActive
sini .sumber