เรามีฐานข้อมูล OLTP 40GB ที่ใช้งานอยู่บน SQL Server 2014 SP1 พบว่าแบบสอบถามจะช้าเมื่อรอ IO_Completion ความยาวคิวดิสก์ที่เพิ่มขึ้นเป็น 900 และ SQL Server หยุดตอบสนอง สิ่งที่เราพยายาม:
รีสตาร์ทอินสแตนซ์และในอีกไม่กี่นาทีมันก็จะเริ่มทำงานในลักษณะเดียวกัน
หลังจากรีสตาร์ทครั้งที่สองเราเปลี่ยนขนาดเริ่มต้นของแต่ละ tempdb datafile (มีไฟล์ข้อมูล 16 ไฟล์ที่สร้างขึ้น) และเริ่มทำงานได้อย่างถูกต้อง
หมายเหตุ: เรากำลังใช้ตัวแปรตารางสำหรับชุดผลลัพธ์ระดับกลาง ชุดผลลัพธ์เหล่านี้มีขนาดเล็กมาก
มันเกิดขึ้นสองครั้งในหนึ่งเดือน ทุกครั้งที่ฉันเพิ่มพื้นที่ว่างเล็กน้อยลงในไฟล์ข้อมูลด้วยตนเองจากนั้นจะเริ่มทำงานตามปกติ สิ่งที่น่าสนใจกว่าก็คือการตั้งค่าเดียวกัน (ฮาร์ดแวร์เดียวกัน, โฟลเดอร์เดียวกันและการตั้งค่าไฟล์, ปริมาณงานเดียวกัน) ที่เรามีใน SQL Server 2008 R2 และ SQL Server 2012 ทำงานได้ดี
กรุณาช่วยเราหาวิธีแก้ไขปัญหาอย่างถาวร
ขนาดเริ่มต้นของไฟล์ข้อมูลทั้งหมดคือ 1,000MB เดียวกันปัจจุบันเป็นแต่ละไฟล์ 1500MB ทั้งหมดเหมือนกัน Autogrowth คือ 100MB สำหรับแต่ละอัน ก่อนหน้านี้เรากำลังเผชิญหน้ากับการช่วงชิงหน้า PFS และ GAM และเราเพิ่มขึ้นเป็น 16 และแก้ไขปัญหาได้ เปิดใช้งานแฟล็กการติดตามทั้ง 1117 และ 1118 24 cores บน 2 NUMA nodes datafiles ทั้งหมดอยู่ในปริมาณเดียวกัน ดิสก์ธรรมดาไม่มี SAN
อินสแตนซ์อยู่บนเครื่องฟิสิคัล แบบสอบถามที่มีตัวแปรตารางและแบบสอบถามที่มีตัวเชื่อมแฮชส่วนใหญ่กำลังสร้างการรอ IO_Completion
คำตอบโดยละเอียดโดย wBob ทำให้เราค้นหารายละเอียดเพิ่มเติม เราไม่เคยพลาดมาก่อน:
Autogrow ของไฟล์ 'templog' ในฐานข้อมูล 'tempdb' ถูกยกเลิกโดยผู้ใช้หรือหมดเวลาใช้งานหลังจาก 7704 มิลลิวินาที ใช้ ALTER DATABASE เพื่อตั้งค่า FILEGROWTH ที่เล็กลงสำหรับไฟล์นี้หรือเพื่อกำหนดขนาดไฟล์ใหม่อย่างชัดเจน
เราพบสิ่งนี้ในบันทึกเมื่อเกิดปัญหาประเภทนี้ขึ้น เรากำลังย้าย TempDB เพื่อแยกไดรฟ์ที่รวดเร็ว