SQL Server: หยุดชะงักในทรัพยากรบัฟเฟอร์การสื่อสารล็อค


30

สาเหตุที่เป็นไปได้สำหรับการหยุดชะงักประเภทนี้คืออะไร (ไม่ใช่การหยุดชะงักโดยทั่วไป)

ล็อคทรัพยากรบัฟเฟอร์การสื่อสาร

สิ่งนี้บ่งชี้ว่าระบบมีหน่วยความจำต่ำและบัฟเฟอร์นับไม่เกินขีด จำกัด หรือไม่?

ข้อผิดพลาดโดยละเอียด:

ทรานแซคชัน (ID กระบวนการ 59) ถูกหยุดชะงักในทรัพยากรบัฟเฟอร์การสื่อสารล็อคด้วยกระบวนการอื่นและได้รับเลือกเป็นเหยื่อการหยุดชะงัก รันธุรกรรมอีกครั้ง

คำตอบ:


24

ข้อความแบบเต็มที่เห็นได้ทั่วไป:

ทรานแซคชัน (รหัสกระบวนการ 53) หยุดชะงักเมื่อล็อค | ทรัพยากรบัฟเฟอร์การสื่อสารกับกระบวนการอื่นและได้รับเลือกให้ตกเป็นเหยื่อการหยุดชะงัก รันธุรกรรมอีกครั้ง

โดยทั่วไปชนิดล็อกนี้จะเห็นพร้อมกับข้อความค้นหา deadlock ที่ SQL Server เรียกใช้งานแบบขนานบางครั้งเรียกว่า ฉันเห็นข้อความสองสามข้อว่าสิ่งนี้ยังชี้ให้เห็นว่าทรัพยากรระบบอยู่ในระดับต่ำซึ่งฉันคิดว่าน่าจะเกี่ยวข้องกับระดับเล็กน้อย

แนวทางทั่วไปที่ฉันได้สังเกตเห็นว่าเป็น deadlock แบบขนานหรือไม่เมื่อคุณดึงกราฟ XML deadlock (ซึ่งสามารถทำได้กับเซสชัน system_health ในปี 2008 และสูงกว่า) คุณจะสังเกตเห็นรหัสกระบวนการที่แตกต่างกันแสดงรหัสเดียวกันภายใน สแตกการเรียกใช้

รวมถึงการดูรายการทรัพยากรของกราฟ deadlock และสังเกตชนิดของบริกรเหตุการณ์ โดยทั่วไปแล้วพวกเขาจะแสดง "e_xxxxxx" หรืออะไรทำนองนี้อาจจะ:

<waiter-list>
 <waiter event="e_waitPipeGetRow" type="consumer" id="process821d828" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process8209198" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process3827c18" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process3809eb8" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process8226b08" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process9acb6d8" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process6188d7828" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process381cef8" />
</waiter-list>

หากต้องการลองและแก้ไขปัญหาเส้นทางที่หลากหลายที่จะนำเสนอทางออนไลน์และในหนังสือ โดยทั่วไปฉันเริ่มต้นด้วยการดูแผนการดำเนินการของแบบสอบถาม / ขั้นตอนและมุ่งเน้นไปที่พื้นที่ที่แสดงการดำเนินการแบบขนาน จากนั้นให้ลองปรับคิวรีก่อนจากนั้นจึงเป็นทางเลือกสุดท้ายอาจเริ่มใช้คำใบ้แบบสอบถาม

MAXDOP 1คำใบ้แบบสอบถามที่พบมากที่สุดที่คุณจะเห็นกล่าวถึงในการแก้ปัญหาการติดตายเหล่านี้จะดำเนินการ อย่างไรก็ตามก่อนที่จะทำเช่นนั้นคุณอาจตรวจสอบเพื่อดูว่า MAXDOP ระดับเซิร์ฟเวอร์และเกณฑ์ต้นทุนถูกตั้งค่าไว้ที่ระดับใด โดยทั่วไปเกณฑ์ค่าใช้จ่ายถูกตั้งไว้ที่ 5 โดยค่าเริ่มต้นและฉันต้องการยกระดับเป็น 35 หรือ 40 เพื่อเริ่มต้นด้วยหากแบบสอบถามที่สงสัยมีต้นทุนที่ต่ำสำหรับส่วนของรหัสนั้นอาจไม่จำเป็นต้องทำงานแบบขนานเลย ฉันไม่ใช่ทุกคนที่ชอบใช้คำแนะนำการค้นหา MAXDOP แต่นั่นไม่ได้หมายความว่าพวกเขาไม่มีสถานที่และจุดประสงค์ แค่ความเห็นของฉัน

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