เซสชันที่ถูกบล็อกรอด้วย PAGELATCH_ * รอประเภทหรือไม่


9

แก้ไข: เหตุใดการรายงานเซสชันถูกบล็อก แต่รอด้วยPAGELATCH_*และไม่LCK_M_เกี่ยวข้องกับประเภทการรอ

ก่อนหน้านี้ฉันสันนิษฐานว่าเซิร์ฟเวอร์ SQL จะรายงานเฉพาะเซสชันการบล็อกในคอลัมน์บล็อค_session_Idเท่านั้น PAGELATCH_*หากการประชุมที่ถูกบล็อกกำลังรอล็อคตรรกะและไม่ได้อะไรอย่างอื่นเช่น

ป้อนคำอธิบายรูปภาพที่นี่


ดูเหมือนว่าเซสชันที่เกิดขึ้นพร้อมกันจำนวนมากจะแทรกข้อมูลลงในตาราง คุณสามารถโพสต์โครงสร้างตารางพร้อมกับดัชนีได้หรือไม่
Kin Shah

@ ในตารางเริ่มต้นแทรกโดย SPIDs 69, 82 และ 84 มีดัชนีคลัสเตอร์ที่กำหนดด้วยคุณสมบัติ IDENTITY (1,1) ดังนั้นจึงอาจเป็นกรณีของการแทรกหน้าการโต้แย้งครั้งสุดท้าย แต่ในขั้นตอนนี้ฉันสนใจมากขึ้น เหตุใดเซสชันที่ถูกบล็อกกำลังรอด้วยประเภทรอที่ไม่เกี่ยวข้องกับการล็อค ที่น่าสนใจก็คือ SPID 93 กำลังพยายามที่จะวาง XLOCK บนโต๊ะที่ไม่เกี่ยวข้องทั้งหมดในตารางที่ถูกเลือกจาก 64
Pixelated

คำตอบ:


6

ก่อนหน้านี้ผมสันนิษฐานว่า SQL Server เท่านั้นจะรายงานเซสชั่นการปิดกั้นในคอลัมน์ blocking_session_id PAGELATCH_*ถ้าการประชุมที่ถูกบล็อกกำลังรอล็อคตรรกะและไม่ได้อะไรอย่างอื่นเช่น

คุณกำลังใช้sp_WhoIsActiveกระบวนงานของ Adam Machanic ไม่ใช่สิ่งอำนวยความสะดวก SQL Server ในตัว ขั้นตอนของอดัมรายงานสาเหตุที่น่าสนใจทั้งหมดของการบล็อกไม่ใช่แค่ล็อคการบล็อก ข้อมูลพื้นฐานมาจากแหล่งต่าง ๆ รวมทั้งsysprocesses , sys.dm_exec_requestsและsys.dm_os_waiting_tasks

งานสามารถรอสิ่งอื่นนอกเหนือจากการล็อค ตัวอย่างเช่นมันอาจสามารถรับการล็อคแบบเอกสิทธิ์เฉพาะบุคคลในแถวบนหน้า แต่ก็ยังต้องรอการรับlatchหน้าเอกสิทธิ์เฉพาะบุคคล(เนื่องจากงานอื่น ๆ ได้latchหน้าเดียวกันในโหมดที่เข้ากันไม่ได้)

ในตัวอย่างของคุณPAGELATCH_EXสลักหน้าพิเศษอยู่ในข้อมูลหรือดัชนีหน้าเว็บปกติไม่ PFS, GAM หน้า SGAM, DCM หรือ BCM ตามที่ระบุโดย (*) ในตอนท้ายของwait_info

คุณสามารถค้นหาเอกสาร (บล็อก) สำหรับที่นี่sp_WhoIsActive

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.