SQL Server: กลุ่มไฟล์สำหรับตารางระบบเท่านั้น


11

หนึ่งในมาตรฐานองค์กรของเราคือมีกลุ่มไฟล์ / ไฟล์แยกต่างหากสำหรับตารางผู้ใช้ / ดัชนี ค่านี้ถูกตั้งค่าเป็นค่าเริ่มต้นดังนั้นไม่จำเป็นต้องมีคุณสมบัติในการสร้างคำสั่ง CREATE TABLE

ดังนั้นดูเหมือนว่านี้

  • fileid 1 = ตารางระบบ, MDF
  • fileid 2 = t-log = LDF
  • fileid 3 = สิ่งที่ผู้ใช้ = NDF

ทุกคนที่นี่สามารถช่วยฉันเข้าใจเหตุผลดั้งเดิมได้ไหมว่าทำไมเรื่องนี้ถึงได้รับคำสั่ง?


ฉันจะมาทำความสะอาดและฉันคิดว่ามันเป็นของขึ้น Am ฉันผิด ... ?

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

คำตอบ:


9

หนังสือฝึกอบรม 70-432 ของ Microsoft กล่าวว่า "เหตุผลหลักที่จะไม่วางวัตถุใด ๆ ของคุณในกลุ่มไฟล์หลักคือให้แยก I / O ได้มากเท่าที่เป็นไปได้ข้อมูลในวัตถุระบบไม่เปลี่ยนแปลงบ่อยเท่าข้อมูล ในวัตถุของคุณโดยการลดกิจกรรมการเขียนลงในไฟล์ข้อมูลหลักคุณจะลดความเป็นไปได้ที่จะนำเสนอความเสียหายเนื่องจากความล้มเหลวของฮาร์ดแวร์นอกจากนี้เนื่องจากสถานะของกลุ่มไฟล์หลักยังกำหนดสถานะของฐานข้อมูล ของฐานข้อมูลของฉันลดการเปลี่ยนแปลงที่เกิดขึ้นกับ filegroup หลัก "

ดังนั้นให้ทำตามที่คุณต้องการ บางคนบอกว่านี่ไม่จำเป็นในบางสถานการณ์และแน่นอนมากกว่าที่จะรักษา แค่คิดว่าฉันให้เหตุผลของ Microsoft


มีเหตุผลบางอย่างเป็นลายลักษณ์อักษรสำหรับมัน ฉันจะยอมรับเรื่องนี้
GBN

1
อีกเหตุผลหนึ่งคือการกู้คืนฐานข้อมูลส่วนหนึ่งช่วยให้เรียกคืนกลุ่มไฟล์หลักและเลือกกลุ่มไฟล์อื่น ๆ ที่ช่วยให้การกู้คืนเร็วกว่าของ VLDB ที่ออกแบบมาอย่างถูกต้อง การอนุญาตให้กลุ่มไฟล์ที่เก็บถาวร / รองถูกกู้คืนในภายหลัง
MartinC

@MartinC: ฉันรู้เกี่ยวกับการคืนค่าบางส่วน ฯลฯ แต่ฉันไม่เคยเข้าใจตรรกะของการแยกตารางระบบอย่างชัดเจน กลุ่มไฟล์สำหรับการแสดง, การเก็บถาวร, การบำรุงรักษา, การแบ่งพาร์ติชัน ฯลฯ แต่ตารางระบบ? จาเร็ดเสนอคำอธิบายที่ดีที่สุดจนถึงตอนนี้ ..
gbn

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

12

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

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

อย่างไรก็ตามคุณควรเตะในขยะเพราะบอกว่าควรเปิดใช้งาน AutoShrink


หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับสิ่งนี้คุณสามารถค้นหาการกู้คืนทีละชิ้นในหนังสือออนไลน์ได้
Brent Ozar

1
ฉันคิดเสมอว่านี่เป็นรายการวูดูด้วยเช่นกันเนื่องจากกลุ่มไฟล์ 2 กลุ่มอยู่ในปริมาณเดียวกัน (บน SAN) ความเสี่ยงของการทุจริตสูงหรือไม่? (DBA ที่ทำงานจริงตั้งค่า AutoShrink false)
gbn

อัตราต่อรองคือถ้ามีความเสียหายมันจะเป็นหน้าเดียวภายในไฟล์เดียวเป็นที่เก็บจะ hickup ในการเขียนหน้าไปยังดิสก์ สิ่งที่ชอบ 99.9999% ของความเสียหายของฐานข้อมูลเป็นปัญหาการจัดเก็บ ส่วนที่เหลือ 1/2 ของปัญหาคือหน่วยความจำไม่ดีส่วนที่เหลือเป็นข้อบกพร่องของ SQL เมื่อฐานข้อมูลมีขนาดใหญ่ขึ้น (multi-TB) สิ่งนี้จะมีความสำคัญมากขึ้นเนื่องจากการกู้คืนฐานข้อมูล multi-TB จะใช้เวลาหลายวัน
mrdenny

ฉันจะไม่ถูกคิดว่าถ้าวัตถุระบบอยู่ในกลุ่มไฟล์หลักเท่านั้นที่คุณต้องการในอนาคตคุณจะสามารถทำต่อไปนี้ สร้าง x ไฟล์เพิ่มเติมในกลุ่มไฟล์อื่น สัดส่วนเติมไฟล์เหล่านี้โดยการโยกย้ายข้อมูลของคุณจากไฟล์ข้อมูลที่มีอยู่ของคุณ?
Ally Reilly

4

ไม่แน่ใจว่าฉันเข้าใจคุณกำลังขอให้ใครสักคนที่จะปรับมาตรฐานขององค์กรของคุณ? ฉันคิดว่าใครก็ตามที่เขียนเอกสารมาตรฐานสำหรับ บริษัท ของคุณจะสามารถเข้าใจได้ว่าทำไมสิ่งนี้ถึงเกิดขึ้นได้

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


ขอบคุณ ไม่ปรับมัน แต่อธิบายมัน นี่คือทีม DB Engineering เดียวกับที่เปิด AutoShrink รับตารางระบบครอบครองไม่กี่ MBs และจะอยู่ในหน่วยความจำต่อไปคุณเชื่อในการเพิ่มประสิทธิภาพใด ๆ ?
gbn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.