การตั้งค่าดิสก์ / พาร์ติชันที่แนะนำสำหรับ SQL Server


14

ฉันกำลังมองหาคำแนะนำเกี่ยวกับวิธีที่ดีที่สุดในการตั้งค่าดิสก์ / พาร์ติชันของฉันสำหรับ SQL Server นี่คือบางส่วนของความกังวลหลักของฉัน:

ควรแยกไฟล์ SQL อย่างไร (ไฟล์ข้อมูล, บันทึก, อุณหภูมิ)

จะดีกว่าหรือไม่ที่จะ RAID HDD จำนวนมากและแบ่งพาร์ติชันพื้นที่หรือทำให้ RAID หลายตัวมีดิสก์น้อยลงสำหรับแต่ละ RAID?

ข้อมูลและไฟล์บันทึกควรเป็น RAID ชนิดอื่นหรือไม่

ฐานข้อมูลเริ่มต้น (master, msdb, etc ... ) ควรอยู่ใน C: หรือควรอยู่ในตำแหน่งเดียวกันกับไฟล์ data / log อื่น ๆ หรือไม่?

คำตอบ:


14

นี่เป็นบล็อกโพสต์ที่ดี: http://sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html

เอกสารทางเทคนิคเกี่ยวกับการจัดแนวดิสก์: http://msdn.microsoft.com/en-us/library/dd758814.aspx

ในระยะสั้นระบบปฏิบัติการของคุณควรอยู่ใน RAID 1, ไฟล์ข้อมูลของคุณใน RAID 10 (เด่นกว่า) และไฟล์บันทึกใน RAID 1

บทความประสิทธิภาพของ SQL: http://www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx

PDF เคล็ดลับประสิทธิภาพที่ดีที่สุด 10 อันดับแรก: http://www.stlssug.org/docs/Best_Practices_for_Performance.pdf

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

MS บอกว่าทำไม tempdb: http://msdn.microsoft.com/en-us/library/ms175527.aspx


@SQLChicken: หากมีการกำหนดลักษณะของไดรฟ์ -> SATA vs SAS มีคำแนะนำหรือไม่? SAS ผ่าน SATA หรือไม่ (ไม่คำนึงถึงประเภท RAID ฯลฯ )
Pure.Krome

1
SAS ไดรฟ์หากคุณมีเงินเป็นที่ต้องการมากกว่า SATA เนื่องจากความเร็วและความน่าเชื่อถือ
SQLChicken

11

นี่เป็นคำถามที่ใหญ่มาก

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

สิ่งแรกที่คุณควรพิจารณาคือเวิร์กโหลดบนฐานข้อมูลต่าง ๆ คือ OLTP (อ่าน / เขียน) หรือ DSS / DW (อ่านเป็นหลัก) สำหรับการอ่าน / เขียนเวิร์กโหลดคุณควรดู RAID 1 หรือ RAID 10 (RAID 1 + 0) เนื่องจากสิ่งเหล่านี้ให้ความซ้ำซ้อนและประสิทธิภาพการอ่าน / เขียนที่ยอดเยี่ยม สำหรับเวิร์กโหลดที่อ่านแล้วโดยส่วนใหญ่คุณสามารถใช้ RAID 5 เหตุผลที่ไม่ควรใช้ RAID 5 สำหรับเวิร์กโหลดการอ่าน / เขียนคือคุณต้องจ่ายค่าปรับประสิทธิภาพในการเขียน

บันทึกธุรกรรมโดยทั่วไปแล้วจะเป็นอ่าน / เขียน (หรือเขียนเป็นส่วนใหญ่ขึ้นอยู่กับว่าคุณใช้บันทึกธุรกรรมเพื่ออะไร - เช่นการสำรองข้อมูลบันทึกหรือการจำลอง) และดังนั้นจึงไม่ควรใส่ RAID 5

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

การแยกฐานข้อมูลจริงอีกครั้งขึ้นอยู่กับปริมาณงานและความสามารถของระบบย่อย IO พื้นฐาน - ระดับสูงของการแยกอาจจำเป็นสำหรับการจัดเก็บสิ่งต่าง ๆ ในแต่ละอาร์เรย์ RAID กว่าบน SAN ตัวอย่างเช่น

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

นี่คือการเชื่อมโยงไปยังเอกสารผมช่วยเขียนที่จะช่วยให้คุณ: ฐานข้อมูลทางกายภาพการจัดเก็บข้อมูลการออกแบบ ตรวจสอบให้แน่ใจด้วยว่าระบบย่อย IO ของคุณสามารถรองรับปริมาณงานที่คาดการณ์ไว้ - ดูเอกสารทางเทคนิคนี้: แนวทางปฏิบัติที่ดีที่สุดของ I / Oล่วงหน้า ขั้นสุดท้ายตรวจสอบให้แน่ใจว่าคุณใช้ขนาดแถบ RAID ที่ถูกต้อง (โดยปกติคือ 64K หรือสูงกว่าในระบบที่ใหม่กว่า) ขนาดหน่วยการจัดสรร NTFS ที่ถูกต้อง (ปกติคือ 64K) และบนระบบก่อน Windows Server 2008 คุณตั้งค่าพาร์ติชันดิสก์ . สำหรับข้อมูลเกี่ยวกับสิ่งเหล่านี้และตัวชี้ไปยังข้อมูลเพิ่มเติมเกี่ยวกับพวกเขาและทำไมคุณควรกำหนดค่าด้วยวิธีนี้ดูโพสต์บล็อกนี้: ตั้งค่าพาร์ติชันดิสก์ของคุณขนาด RAID สตริปและหน่วยจัดสรร NTFS ถูกต้องหรือไม่ .

บรรทัด Bototm: รู้จักปริมาณงานของคุณและความสามารถของระบบย่อย IO ของคุณจากนั้นนำไปใช้อย่างเหมาะสม

ฉันหวังว่านี่จะเป็นประโยชน์กับคุณ

PS เท่าที่ tempdb เกี่ยวข้องมันเป็นหนอนขนาดใหญ่ที่สามารถกำหนดค่าและมีข้อมูลที่ขัดแย้งกันทุกชนิด ผมเขียนบล็อกโพสต์ที่ครอบคลุมเกี่ยวกับการกำหนดค่า tempdb แฟ้มข้อมูลที่เข้าใจผิดรอบ TF 1118


Great post Paul :)
Pure.Krome

1

คำตอบสั้น ๆ สำหรับเซิร์ฟเวอร์ที่ฉันตั้งค่ามาโดยตลอด

บันทึกบนดิสก์ทางกายภาพแยกต่างหากจู่โจม 1 หรือ 10 (striping + mirroring)

ฐานข้อมูลบนดิสก์ของตัวเองขึ้นอยู่กับความต้องการด้านประสิทธิภาพโดยทั่วไปแล้ว RAID5

แคชจำนวนมากบนคอนโทรลเลอร์การโจมตี

ติด OS และ Windows Pagefile ของคุณบนอาร์เรย์ที่แยกต่างหากอีกครั้งโดยปกติจะเป็นเพียงมิรเรอร์ (Raid 1) สิ่งนี้จะแยกการดำเนินการเขียนทั้งหมดออกจากกันดังนั้นประสิทธิภาพที่หนักหน่วงไม่ได้ลากทุกอย่างลง

สิ่งที่ฉันเคยพบในอดีตคือการมีฐานข้อมูลการเขียน + การบันทึกการเขียน + การเขียนเพจไฟล์จะชะงักลงในอาร์เรย์ Raid5 และประสิทธิภาพการทำงานจะไปที่ heck ใน handbasket ปัญหาคือประสิทธิภาพการทำงานของคุณจะดีในการทดสอบ dev และอื่น ๆ แต่เมื่อคุณเข้าสู่การผลิตและการใช้งาน skyrockets ปัญหานี้จะปรากฏขึ้น "ออกจากสีฟ้า" และร้องเรียนของผู้ใช้พุ่งสูงขึ้น


1

มีผู้ชาย MSSQL ที่ดีกว่าที่นี่มากกว่าฉัน แต่โดยทั่วไปฉันอยากจะแนะนำสิ่งต่อไปนี้

ระบบปฏิบัติการและรหัสบน C: - ควรเป็นดิสก์ภายในเครื่องควรเป็นคู่อาร์เรย์ RAID1 เราใช้ดิสก์ SAS 146GB 10krpm ขนาด 2 x 2.5 นิ้ว แต่คุณสามารถใช้ดิสก์ 2 x SATA 7.2 ได้ ข้อมูลควรอยู่ในระดับที่ค่อนข้างเร็ว (10krpm หรือดีกว่า) RAID 1/10, 5/50/6/60 ทุกขนาดที่คุณต้องการ - เราจัดเก็บ FC SAN LUNs ของเราโดยปกติจะอยู่ในกลุ่มดิสก์ 'Tier 2' / 10krpm . บันทึกควรอยู่ใน VERY FAST (15krpm) ขนาดเล็กแยกต่างหาก (10GB หรือน้อยกว่า) อาร์เรย์ RAID 1 คู่ - เราจัดเก็บ FC SAN LUNs ของเราโดยปกติจะอยู่ในกลุ่มดิสก์ 'tier1' / 15krpm ขนาดเล็กมากหรือใน 'tier0' / กลุ่ม ssd

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

เราเก็บ master / tempdb ของเรากับฐานข้อมูลปกติของเรา แต่คุณสามารถแบ่งมันเป็น data array แยก LUN

หวังว่านี่จะช่วยได้


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

ฉันไกลจากการเป็นผู้เชี่ยวชาญ แต่เราดูเหมือนจะพบพวกเขาอยู่ที่ขนาดเล็ก - ระยะของคุณอาจแตกต่างกัน :)
Chopper3
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.