การบล็อกวัตถุลำดับ

Aug 19 2020

เราประสบปัญหากับวัตถุลำดับที่เรามีซึ่งเรียกว่ามาก ใช้เพื่อกำหนดค่าก่อนที่จะแทรกระเบียนลงในตาราง

วันนี้ฉันเห็นว่า 700+ เซสชัน (ทุกคนพยายามรับค่าถัดไปจากอ็อบเจ็กต์ลำดับ) ถูกบล็อกโดยเซสชันที่พยายามรับค่าถัดไปจากอ็อบเจ็กต์ลำดับด้วยประเภทการรอเป็น PAGELATCH_EX อีก 700+ เซสชันรออยู่ใน LATCH_EX

เมื่อฉันดูทรัพยากรการรอมันอ้างถึง sys.sysobjvalues

ฉันสงสัยว่าเหตุใดจึงอาจเกิดขึ้นได้และหากมีคนอื่นเห็นสิ่งนี้ เราเพิ่งเปลี่ยนค่า CACHE สำหรับลำดับนี้จาก DEFAULT (50) เป็น 200 ฉันคิดว่านี่จะช่วยปรับปรุงประสิทธิภาพของการเรียกลำดับเนื่องจากเราใช้มันอย่างหนัก แต่อาจคิดผิด

เรากำลังใช้ SQL Server 2012 SP4

คำตอบ

LowlyDBA-JohnMcCall Aug 28 2020 at 20:58

อีก 700+ เซสชันกำลังรออยู่ใน LATCH_EX .... เราเพิ่งเปลี่ยนค่า CACHE สำหรับลำดับนี้จาก DEFAULT (50) เป็น 200

หากคุณมีเซสชันการรอ 700 ครั้งความคิดแรกของฉันคือแคชต้องสูงขึ้นมากเนื่องจากปริมาณงาน ฉันอยากจะแนะนำให้ลองทำอะไรสักอย่างในช่วง 500-1000 (และอาจเพิ่มขึ้นเรื่อย ๆ ) จนกว่าคุณจะเห็นว่าการรอคงที่หรือลดลง ควรมีจุดหวานที่คุณสามารถหาได้ด้วยค่าแคชที่มากขึ้น