PAGEIOLATCH_SH wait type ใน SQL Server คืออะไร?


99

ฉันมีคำถามที่ต้องใช้เวลานานในระหว่างการทำธุรกรรม เมื่อผมได้รับของกระบวนการที่มันเป็นwait_typePAGEIOLATCH_SH

ประเภทการรอนี้หมายถึงอะไรและจะแก้ไขได้อย่างไร

คำตอบ:


118

จากเอกสารของ Microsoft :

PAGEIOLATCH_SH

เกิดขึ้นเมื่องานกำลังรออยู่บนสลักสำหรับบัฟเฟอร์ที่อยู่ในI/Oคำร้องขอ คำขอสลักอยู่ในโหมดแชร์ การรอนานอาจบ่งบอกถึงปัญหาเกี่ยวกับระบบย่อยของดิสก์

ในทางปฏิบัติสิ่งนี้มักเกิดขึ้นเนื่องจากการสแกนจำนวนมากบนโต๊ะขนาดใหญ่ แทบไม่เคยเกิดขึ้นในแบบสอบถามที่ใช้ดัชนีอย่างมีประสิทธิภาพ

หากคำถามของคุณเป็นเช่นนี้:

Select * from <table> where <col1> = <value> order by <PrimaryKey>

(col1, col_primary_key)ให้ตรวจสอบว่าคุณมีดัชนีคอมโพสิตใน

หากคุณไม่ได้หนึ่งแล้วคุณจะต้องอย่างใดอย่างหนึ่งที่เต็มไปด้วยINDEX SCANถ้าPRIMARY KEYมีการเลือกหรือSORTถ้าดัชนีในcol1ได้รับการแต่งตั้ง

ทั้งสองอย่างI/Oใช้งานดิสก์มากบนโต๊ะขนาดใหญ่


มันเป็นคำถามง่ายๆจริงๆ เลือก * จาก <table> โดยที่ <col1> = <value> เรียงลำดับตาม <PrimaryKey> นอกจากนี้เรายังมีดัชนีเพียงแค่ col1 และได้พยายามสร้างดัชนีใหม่
Ryan

คุณช่วยแนะนำแหล่งข้อมูลสำหรับการเรียนรู้ความเข้าใจที่คุณมีเกี่ยวกับดิสก์ที่เข้มข้นสิ่งที่ต้องใช้การสแกนดัชนีแบบเต็มสิ่งที่ต้องใช้การเรียงลำดับ ฯลฯ
Greg B

1
@GregB: ถ้าคุณมีความรู้พื้นฐานเกี่ยวกับ SQL อยู่แล้วคุณสามารถอ่านหนังสือของ Joe Celko (ทุกเล่ม แต่โดยเฉพาะSQL for SmartiesและThinking in Sets) และบล็อกของฉันแน่นอน :)
Quassnoi

3
สิ่งนี้บ่งชี้ข้อผิดพลาดในระบบย่อยดิสก์ของเรา ดิสก์ RAID ล้มเหลวโดยไม่เรียกใช้ระบบตรวจสอบ ตรวจสอบบันทึกเหตุการณ์พบว่า SMART ทำเครื่องหมายไดรฟ์ว่าไม่ดี
Gomibushi

7

PAGEIOLATCH_SH ประเภทการรอมักเกิดขึ้นจากดัชนีที่แยกส่วนหรือไม่ได้เพิ่มประสิทธิภาพ

บ่อยครั้งที่สาเหตุของPAGEIOLATCH_SHประเภทการรอมากเกินไปได้แก่ :

  • ระบบย่อย I / O มีปัญหาหรือกำหนดค่าไม่ถูกต้อง
  • ระบบย่อย I / O ที่โอเวอร์โหลดโดยกระบวนการอื่น ๆ ที่สร้างกิจกรรม I / O สูง
  • การจัดการดัชนีไม่ดี
  • ความเข้าใจผิดเกี่ยวกับไดรฟ์เชิงตรรกะหรือทางกายภาพ
  • ปัญหาเครือข่าย / เวลาในการตอบสนอง
  • ความดันหน่วยความจำ
  • Synchronous Mirroring และ AlwaysOn AG

ในการพยายามแก้ไขปัญหาการPAGEIOLATCH_SHรอนานคุณสามารถตรวจสอบ:

  • SQL Server แบบสอบถามและดัชนีซึ่งมักพบว่าเป็นสาเหตุหลักของPAGEIOLATCH_SHประเภทการรอที่มากเกินไป
  • สำหรับความดันหน่วยความจำก่อนที่จะกระโดดเข้าสู่การแก้ไขปัญหาระบบย่อย I / O

โปรดจำไว้เสมอว่าในกรณีที่มีการ Mirroring ความปลอดภัยสูงหรือความพร้อมใช้งานแบบซิงโครนัสใน AlwaysOn AG PAGEIOLATCH_SHสามารถคาดหวังเพิ่มขึ้น / มากเกินไป

คุณสามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับหัวข้อนี้ได้ในบทความการจัดการประเภทการรอของ SQL Server PAGEIOLATCH_SH ที่มากเกินไป

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