เพื่อเพิ่มประสิทธิภาพฐานข้อมูลให้มากที่สุดคำสั่งใดที่ควรรันหลังจากโหลดข้อมูลจำนวนมากลงใน SQL Server 2008 ผ่าน SSIS


11

ฉันได้เขียนแพ็คเกจ SSIS เพื่อโหลดข้อมูลทดสอบลงในฐานข้อมูลเปล่า ตารางบางตารางมีขนาดใหญ่มาก (ประมาณ 700 ล้านแถว) เมื่อแพคเกจ SSIS เสร็จสิ้นแล้วมีคำสั่งใดบ้างที่ฉันควรเรียกใช้ (ในฐานะผู้ฝึกงาน DBA!) เพื่อเพิ่มประสิทธิภาพของฐานข้อมูล?

ตัวอย่างเช่นฉันดำเนินการEXEC sp_updatestatsแต่รายงานว่าไม่จำเป็นต้องมีการอัพเดตดัชนี

มีรายการของสิ่งที่ต้องทำเมื่อโหลดข้อมูลจำนวนมากหรือ SQL Server 2008 จัดการสิ่งเหล่านั้นให้คุณหรือไม่?

คำตอบ:


8

หากคุณกำลังโหลดไปยังฐานข้อมูลที่ว่างเปล่าคุณสามารถ / ควรดำเนินการตามขั้นตอนเพื่อหลีกเลี่ยงความต้องการขั้นตอนการบำรุงรักษาเพิ่มเติมหลังโหลด การแยกส่วนเป็นศัตรูนั่นคือสิ่งที่คุณพยายามหลีกเลี่ยง

  • วางดัชนี NC ทั้งหมดก่อนที่จะโหลด
  • โหลดโพสต์เพิ่มดัชนี NC สำหรับแต่ละตารางในลำดับคืออย่าเพิ่มดัชนีใน TableA จากนั้น TableB จากนั้นกลับไปที่ TableA สิ่งนี้ไม่มีผลต่อการแตกแฟรกเมนต์ แต่สามารถปรับปรุงเวลาที่ใช้เพื่อเพิ่มดัชนีในชุดข้อมูลที่มีขนาดใหญ่มาก (ลดบัฟเฟอร์พูลปั่น)
  • หากคุณสามารถแทรกข้อมูลลงในตารางตามลำดับดัชนีคลัสเตอร์ให้ออกจากดัชนีคลัสเตอร์ในสถานที่ หากคุณทำไม่ได้ให้ดัมพ์ข้อมูลลงในฮีปและสร้างใหม่ในโหลดโพสต์ดัชนีแบบคลัสเตอร์

แทนที่จะคัดลอกและวางผมจะชี้ให้คุณไปยังรายการที่ครอบคลุมมากของการอ้างอิงสำหรับการเพิ่มประสิทธิภาพ ETL @Marian ใส่กันในคำตอบให้กับคำถามที่ผมถาม BCP หลายสิ่งเหล่านี้จะสามารถใช้ได้กับสถานการณ์ของคุณอย่างเท่าเทียมกัน


2
น่าสนใจที่ลิงค์ไปยังวิดีโอจาก SQLCAT และ SSIS การค้นพบของพวกเขาไม่เคยลดลงดัชนี NC คาดเดาว่านี่เป็นอีกกรณีของ "มันขึ้นอยู่กับ"
billinkc

2
@billinkc นั้นไม่ใช่สำหรับการโหลดที่เพิ่มขึ้นแทนที่จะเป็นฐานข้อมูลเปล่า ๆ ที่คำถามนี้อ้างถึงด้วย? ทั้งสองวิธีการทดสอบ SQLCAT มีแนวโน้มที่จะเกี่ยวข้องกับคลาสของฮาร์ดแวร์ที่ไม่ค่อยเห็นในองค์กรทั่วไป
Mark Storey-Smith

5

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

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

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


4
ตามแนวของดัชนีในหนึ่งในวิดีโอ SSIS จากSQLCATพวกเขายังแนะนำกฎง่ายๆว่าหากการเติบโตของข้อมูลของคุณคือ> 100% และมี NCI เดียวให้ปล่อยและสร้างใหม่ หากมากกว่า 10% และมี NCI มากกว่า 2 ตัวการปล่อยและสร้างใหม่จะทำให้ประสิทธิภาพดีขึ้น
billinkc

2
เพียงเพื่อชี้แจงความคิดเห็นของ Bill - ฉันคิดว่าเขากำลังพูดถึงข้อเสนอแนะสำหรับเวลาที่จะวางพวกเขาหมายถึงดัชนีลดลงทำโหลดข้อมูลของคุณแล้วสร้างดัชนีของคุณ .. แทนที่จะปล่อยดัชนี (es) ในระหว่างการโหลดและ สร้างใหม่หลังจาก ฉันคิดอย่างนั้น :-) และใช่จุดที่ดีฉัน +1 ที่แสดงความคิดเห็น
Mike Walsh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.