ฉันมี 2 แบบสอบถามซึ่งเมื่อทำงานในเวลาเดียวกันจะทำให้เกิดการหยุดชะงัก
แบบสอบถาม 1 - อัปเดตคอลัมน์ซึ่งรวมอยู่ในดัชนี (ดัชนี 1):
update table1 set column1 = value1 where id = @Id
ใช้ X-Lock บน table1 จากนั้นลอง X-Lock บน index1
แบบสอบถาม 2:
select columnx, columny, etc from table1 where {some condition}
นำ S-Lock ไปที่ index1 จากนั้นลอง S-Lock บน table1
มีวิธีการป้องกันการหยุดชะงักในขณะที่รักษาข้อความค้นหาเดียวกันหรือไม่ ตัวอย่างเช่นฉันสามารถใช้ X-Lock ในดัชนีในธุรกรรมการปรับปรุงก่อนการปรับปรุงเพื่อให้แน่ใจว่าการเข้าถึงตารางและดัชนีอยู่ในลำดับเดียวกัน - ซึ่งควรป้องกันการหยุดชะงัก
ระดับการแยกถูกอ่านอย่างมุ่งมั่น การล็อคแถวและหน้าถูกเปิดใช้งานสำหรับดัชนี มีความเป็นไปได้ว่าระเบียนเดียวกันนั้นมีส่วนร่วมในทั้งสองข้อความค้นหา - ฉันไม่สามารถบอกได้จากกราฟการหยุดชะงักเนื่องจากไม่แสดงพารามิเตอร์