ไม่แนะนำให้ทำการจัดระเบียบใหม่และหดตัว
หากคุณสามารถใช้แอปที่ให้บริการฐานข้อมูลแบบออฟไลน์คุณสามารถเร่งกระบวนการและลดการกระจายตัวของดัชนีโดยการลบดัชนีและข้อ จำกัด คีย์หลัก / ต่างประเทศทั้งหมดก่อนที่จะย่อขนาดลง (หมายความว่ามีข้อมูลน้อยกว่าที่จะย้ายไปรอบ ๆ หน้าข้อมูลจะไม่สับหน้าดัชนีที่ไม่มีอยู่ตอนนี้เร่งกระบวนการ) จากนั้นสร้างดัชนีและคีย์ทั้งหมดใหม่
การสร้างดัชนีใหม่หลังจากการย่อขนาดหมายความว่าไม่ควรมีการแยกส่วนอย่างมีนัยสำคัญและการทำให้ดัชนีหายไปในระหว่างการย่อขนาดหมายความว่าการสร้างใหม่จะไม่ทำให้เกิด "รู" เล็ก ๆ จำนวนมากในการจัดสรรหน้าภายในไฟล์
ตัวเลือกอื่นถ้าคุณสามารถออฟไลน์แอปพลิเคชันคือการย้ายข้อมูลทั้งหมดไปยังฐานข้อมูลใหม่ของโครงสร้างเดียวกัน หากกระบวนการสร้างของคุณมั่นคงคุณควรจะสามารถสร้างฐานข้อมูลที่ว่างเปล่าได้อย่างรวดเร็วถ้าไม่สร้างจากฐานข้อมูลปัจจุบัน (คืนค่าสำเนาสำรองของปัจจุบันให้ตัดทอน / ลบเนื้อหาทั้งหมดในตารางและทำการย่อขนาดเต็ม)
คุณอาจยังต้องการวางดัชนีทั้งหมดในปลายทางและสร้างดัชนีใหม่ในภายหลังเนื่องจากจะมีประสิทธิภาพมากขึ้นเมื่อเปลี่ยนข้อมูลดัชนีจำนวนมาก (100% ของดัชนีในกรณีนี้) เพื่อเพิ่มความเร็วในกระบวนการคัดลอกให้มีดาต้าไฟล์ของฐานข้อมูลปลายทางบนฟิสิคัลไดรฟ์ต่าง ๆ ไปยังต้นทาง (เว้นแต่คุณกำลังใช้ SSD ในกรณีที่คุณไม่จำเป็นต้องกังวลเกี่ยวกับการลดการเคลื่อนไหวของหัว) คุณสามารถย้ายได้ ไปยังตำแหน่งแหล่งที่มาเมื่อคุณทำเสร็จแล้ว
นอกจากนี้หากการสร้างปลายทางเหมือนใหม่ (แทนที่จะทำสำเนาต้นฉบับ) ให้สร้างด้วยขนาดเริ่มต้นที่จะมีข้อมูลปัจจุบันทั้งหมดบวกกับการเติบโตหลายเดือนซึ่งจะทำให้การคัดลอกข้อมูลเร็วขึ้นอีกเล็กน้อยเช่น มันจะไม่จัดสรรพื้นที่ใหม่ทุก ๆ ครั้งตลอดกระบวนการ
สิ่งนี้อาจดีกว่าการใช้การย่อขนาดเนื่องจากการย้ายข้อมูลไปยังฐานข้อมูลใหม่จะเป็นการจำลองการกระทำที่ตั้งใจไว้ของการดำเนินการย่อขนาด แต่อาจมีการกระจายตัวน้อยกว่ามาก (ซึ่งเป็นผลลัพธ์ที่ไม่ได้ตั้งใจของการจัดระเบียบใหม่ การย่อขนาดนั้นใช้เวลาบล็อกจากใกล้ถึงจุดสิ้นสุดของไฟล์และวางไว้ในพื้นที่แรกใกล้กับจุดเริ่มต้นโดยไม่ต้องพยายามเก็บข้อมูลที่เกี่ยวข้องไว้ด้วยกัน
ฉันสงสัยว่าผลลัพธ์จะเป็นพื้นที่ที่มีประสิทธิภาพมากกว่าเช่นกันเนื่องจากมีหน้าเว็บที่ใช้งานน้อยกว่าในภายหลัง การย่อขนาดจะย้ายหน้าที่ใช้ไปแล้วส่วนหนึ่งการย้ายข้อมูลมีแนวโน้มที่จะส่งผลให้เต็มหน้าโดยเฉพาะถ้าคุณแทรกเข้าไปในปลายทางตามลำดับของคีย์ / ดัชนีคลัสเตอร์ของตาราง (ที่ตารางมีหนึ่ง) และสร้างดัชนีอื่น ๆ หลังจากข้อมูลได้ย้ายทั้งหมด
แน่นอนถ้าคุณไม่สามารถใช้แอพพลิเคครับที่ทุกคนเพียงแค่ดำเนินการหดตัวเป็นตัวเลือกของคุณเท่านั้นดังนั้นหากคุณจริงๆต้องเรียกคืนไปที่พื้นที่ที่มี รูปแบบการเข้าถึงขนาดชุดการทำงานทั่วไปจำนวน RAM ที่เซิร์ฟเวอร์มีและอื่น ๆ การแตกแฟรกเมนต์ภายในเพิ่มเติมอาจไม่สำคัญเท่าที่ควรทั้งหมดทั้งนี้ขึ้นอยู่กับข้อมูลของคุณ
สำหรับการดำเนินการคัดลอก SSIS หรือฐาน T-SQL ก็ใช้ได้เช่นกัน (ตัวเลือก SSIS อาจมีประสิทธิภาพน้อยกว่า แต่อาจง่ายต่อการดูแลในภายหลัง) หากคุณสร้างความสัมพันธ์ของ FK ในตอนท้ายพร้อมกับดัชนีคุณสามารถทำง่ายๆ "สำหรับแต่ละตารางคัดลอก" ในกรณีใดกรณีหนึ่ง แน่นอนว่าสำหรับการออกครั้งเดียวการจัดระเบียบใหม่ + การจัดระเบียบใหม่ก็อาจจะใช้ได้เช่นกัน แต่ฉันก็แค่อยากจะทำให้ผู้คนกลัวว่าจะไม่พิจารณาการหดตัวแบบปกติ! (ฉันรู้จักคนจัดตารางเวลาทุกวัน)