กราฟ SQL Server Deadlock - ล็อคตารางหน้าหรือแถว?


10

มีวิธีการถอดรหัสถ้าล็อคในกราฟการหยุดชะงักเป็นระดับตารางหน้าหรือแถว? ฉันมีข้อมูลทั้งหมดที่ฉันต้องการจากกราฟรวมถึงระดับการแยก (2) แต่ฉันก็อยากรู้สิ่งนี้เช่นกัน

ขอบคุณทุกคนที่สามารถช่วยได้!

คำตอบ:


13

ใน XML กราฟกราฟหยุดชะงักคุณจะเห็นสิ่งต่อไปนี้

<deadlock-list>
  <deadlock victim="...">
    <process-list>
      <process id="..." ... waitresource="X:..."
...

Xเป็นบิตที่น่าสนใจค่าเป็นไปได้คุณมีความสนใจในคือ:

  • RID สำหรับ id id (การล็อคระดับแถว)
  • PAG สำหรับการล็อคระดับหน้า
  • OBJECT(ซึ่งอาจมีคุณสมบัติเพิ่มเติมTABระบุล็อคตาราง)

มีอีกหลายชนิดที่ระบุไว้ในเอกสารด้วย


ขอบคุณนั่นมีประโยชน์ แม้ว่าในกราฟของฉันฉันมี 2 กระบวนการซึ่งดูเหมือนว่าจะใช้หน้าต่างๆ: waitresource = "RID: 21: 1: 2588: 0" waitresource = "RID: 21: 1: 2699: 1" ดังนั้นหากพวกเขากำลังใช้หน้าเว็บที่แตกต่างกัน แล้วพวกเขาไม่สามารถขัดแย้งกันในแถวเดียวกันได้ใช่ไหม? เพราะฉันใช้คำแนะนำ WITH (ROWLOCK) ในแบบสอบถามนี้
tuseau

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