ฉันรู้ว่ามีการกระจายตัวสามชนิดจริงๆ ที่ฉันต้องกังวลในฐานะ DBA:
การกระจายตัวของดัชนีในไฟล์ข้อมูล SQL รวมถึงการกระจายตัวของดัชนี (ตาราง) คลัสเตอร์ ระบุสิ่งนี้โดยใช้ DBCC SHOWCONTIG (ใน SQL 2000) หรือ sys.dm_ db_ index_ physical_ stats (ในปี 2005+)
การกระจายตัวของVLFภายในไฟล์บันทึก SQL รัน DBCC LOGINFO เพื่อดูว่า VLF มีกี่ไฟล์ในแต่ละไฟล์บันทึก SQL ของคุณ
การแตกไฟล์แบบฟิสิคัลของไฟล์ฐานข้อมูลบนฮาร์ดไดรฟ์ วินิจฉัยสิ่งนี้โดยใช้ยูทิลิตี้ "Disk Defragmenter" ใน Windows (แรงบันดาลใจจากโพสต์บล็อกที่ยอดเยี่ยมนี้ )
ความสนใจจำนวนมากถูกจ่ายให้กับการแยกส่วนดัชนี (ดูคำตอบ Serverfault ที่ยอดเยี่ยมนี้จาก Paul Randall) ดังนั้นนั่นไม่ใช่จุดเน้นของคำถามของฉัน
ฉันรู้ว่าฉันสามารถป้องกันไม่ให้เกิดการกระจายตัวทางกายภาพ (และการกระจายตัวของ VLF) เมื่อฐานข้อมูลถูกสร้างขึ้นมาโดยการวางแผนการคาดแฟ้มข้อมูลและบันทึกขนาดที่เหมาะสมเพราะการกระจายตัวนี้เกิดขึ้นส่วนใหญ่มักจะมาจากบ่อยเติบโตและหดตัว แต่ผมมีคำถามบางอย่างเกี่ยวกับวิธีการแก้ไขการกระจายตัวทางกายภาพเมื่อมีการระบุ:
ก่อนอื่นการแยกส่วนทางกายภาพมีความเกี่ยวข้องกับ Enterprise SAN หรือไม่ ฉัน / ฉันควรใช้ Windows Defragmenter บนไดรฟ์ SAN หรือทีม SAN ควรใช้ยูทิลิตี้จัดเรียงข้อมูลภายในหรือไม่ การวิเคราะห์การแตกแฟรกเมนต์ที่ฉันได้รับจากเครื่องมือ Windows นั้นแม่นยำยิ่งขึ้นเมื่อทำงานบนไดรฟ์ SAN หรือไม่
การกระจายตัวทางกายภาพของ SQL มีขนาดใหญ่เพียงใด (ลองสมมติอาร์เรย์ไดรฟ์ภายในรอผลของคำถามก่อนหน้า) มันเป็นข้อตกลงที่ใหญ่กว่าการกระจายตัวของดัชนีภายในหรือไม่ หรือว่าเป็นปัญหาประเภทเดียวกันจริง ๆ(ไดรฟ์ต้องอ่านแบบสุ่มแทนการอ่านแบบลำดับ)
การจัดเรียงข้อมูล (หรือสร้างใหม่) ทำดัชนีเสียเวลาหากไดรฟ์มีการแยกส่วนทางร่างกายหรือไม่ ฉันต้องแก้ไขอันใดอันหนึ่งก่อนที่จะพูดกับอีกฝ่ายหรือไม่?
เป็นวิธีที่ดีที่สุดในการแก้ไขการกระจายตัวของไฟล์ทางกายภาพในกล่อง SQL ผลิตอะไร ฉันรู้ว่าฉันสามารถปิดบริการ SQL และเรียกใช้ Windows Defrag ได้ แต่ฉันยังได้ยินเกี่ยวกับเทคนิคที่คุณทำการสำรองข้อมูลเต็มรูปแบบวางฐานข้อมูลแล้วเรียกคืนจากการสำรองข้อมูลไปยังไดรฟ์ที่ว่างเปล่า แนะนำเทคนิคหลังนี้หรือไม่ ไม่เรียกคืนจากการสำรองข้อมูลเช่นนี้ยังสร้างดัชนีจากรอยขีดข่วนกำจัดการกระจายตัวของดัชนีภายใน? หรือเพียงแค่คืนคำสั่งซื้อหน้าเดียวกับเมื่อมีการสำรองข้อมูล? (เรากำลังใช้การสำรองข้อมูล Quest Lightspeed พร้อมการบีบอัดหากเป็นเช่นนั้น)
อัปเดต : คำตอบที่ดีจนถึงขณะนี้ว่าจะจัดระเบียบไดรฟ์ SAN (NO) และการจัดระเบียบดัชนียังคุ้มค่ากับไดรฟ์ที่มีการแยกส่วนทางกายภาพ (YES) หรือไม่
ใครสนใจที่จะชั่งน้ำหนักในวิธีที่ดีที่สุดสำหรับการจัดระเบียบข้อมูลจริง? หรือการประเมินระยะเวลาที่คุณคาดว่าจะต้องใช้ในการจัดเรียงข้อมูลไดรฟ์ที่มีการแยกส่วนขนาดใหญ่พูดว่า 500GB หรือมากกว่านั้น มีความเกี่ยวข้องอย่างเห็นได้ชัดเพราะถึงเวลาที่เซิร์ฟเวอร์ SQL ของฉันจะล่ม!
นอกจากนี้หากใครก็ตามมีข้อมูลประวัติย่อใด ๆ เกี่ยวกับการปรับปรุงประสิทธิภาพของ SQL ที่คุณทำโดยการแก้ไขการแตกแฟรกเมนต์แบบฟิสิคัลนั่นก็ยอดเยี่ยมเช่นกัน โพสต์บล็อกของ Mikeพูดถึงการเปิดเผยปัญหา แต่ไม่เฉพาะเจาะจงเกี่ยวกับการปรับปรุงที่ทำขึ้น