SQL Server 2K / 2K5 / 2K8 และ Solid State Disks: การปรับแต่งเฉพาะ?


9

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

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

แน่นอนว่าด้วยงบประมาณที่เพียงพอเราต้องการใช้ดิสก์ SLC SSD เช่น X25-E หรือ Vertex Ex series หรือข้อเสนอระดับองค์กรต่าง ๆ แต่ฉันก็สนใจเคล็ดลับที่อาจเป็นประโยชน์ต่อการตั้งค่า MLC SSD ฉันคิดว่ามันเป็นเรื่องที่น่าสนใจ หนึ่งในลูกค้าของลูกค้าของฉันมีงบประมาณน้อยและชุดข้อมูลที่เติบโตขึ้นอย่างมากและพวกเขากำลังเผชิญกับการเขียนซ้ำอย่างสมบูรณ์เกือบร้อยคำเพื่อที่จะรักษาประสิทธิภาพที่ดี อย่างไรก็ตามฉันมีความสงสัยที่น่าสงสัยว่าพื้นที่หน่วยความจำ RAM และ SSD น้อยกว่า $ 500 อาจทำให้พวกเขาได้รับประสิทธิภาพที่ดีขึ้นกว่าเวลาของนักพัฒนาหลายพันคน

คำตอบ:


3

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

ในการนำไปใช้งานทั้งหมดของ SSD ที่ฉันได้เห็น (หยิบหยิบ) มันเป็นสิ่งที่ตรงกันข้ามกับสิ่งที่คุณแนะนำ - การใช้ SSD ที่ดีที่สุดดูเหมือนจะเป็นบันทึกการทำธุรกรรมและ tempdb ที่หนักหน่วงที่สุด / O ระบบย่อยคอขวดและติด SSD ที่นั่น - เนื่องจากเวลาในการค้นหาและเวลาแฝงจะลดลงเป็นค่าคงที่ต่ำ

ชำระเงินกระดาษนี้การวิจัยที่ MS ผลิต (น่าเสียดายที่ไม่ได้มีรายละเอียดอย่างมหาศาลใน SQL Server เฉพาะ): การย้ายเซิร์ฟเวอร์จัดเก็บข้อมูลเพื่อ SSDs: การวิเคราะห์ Tradeoffs

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


ขอบคุณสำหรับลิงค์ไปยังบทความของ MS มันสั้นอย่างเฉื่อยชาในรายละเอียดใช่มั้ย :) น่าเสียดายที่การเขียนแบบสุ่มขนาดเล็กเป็นสิ่งที่สามารถให้ SSD ได้พอดี โดยสรุปสำหรับแม้แต่การเขียนขนาดเล็ก (เช่น 4KB) SSD จะต้องอ่านบล็อกทั้งหมดลงในหน่วยความจำปรับเปลี่ยนและเขียนกลับออกมา มันเป็นเพียงวิธีการทำงานของหน่วยความจำแฟลชรุ่นปัจจุบัน บทความภาพรวม SSD ที่ยอดเยี่ยม: anandtech.com/storage/showdoc.aspx?i=3531&p=1
John Rose

2

คุณไม่สามารถแก้ไขคุณลักษณะของ IO ในเซิร์ฟเวอร์ SQL หน่วยพื้นฐานของการเข้าถึงดิสก์สำหรับไฟล์ข้อมูลคือหน้าขนาด 8Kb มันจะเขียนพวกเขาเป็นส่วนใหญ่ในระหว่างจุดตรวจ แต่จะขี้เกียจเขียนเมื่อมันสามารถ
SQL ไม่รอการเขียนไปยังดิสก์ข้อมูลให้เสร็จก่อนส่งคืนมันเป็นเพียงบันทึกการเขียนที่ต้องทำให้เสร็จ หากคุณสามารถเก็บบันทึกฐานข้อมูลได้เพียงหนึ่งรายการบนดิสก์ระบบจะเป็นการเขียนตามลำดับและจะสามารถใช้งานได้บนฮาร์ดดิสก์แบบเร็วปกติ
ประสิทธิภาพในการทำงานจากมุมมองของ SQL คือเมื่อต้องอ่านดิสก์ หากคุณสามารถเพิ่มหน่วยความจำได้มากกว่านั้น SQL จะเก็บหน้าข้อมูลเพิ่มเติมในหน่วยความจำซึ่งเร็วกว่าดิสก์ SSD หรืออะไรก็ตาม เห็นได้ชัดว่าคุณสามารถลดจำนวนการอ่านดิสก์โดยการสร้างดัชนีที่เหมาะสม ฉันคาดหวังว่า SSD จะช่วยในการอ่านเหล่านี้เพราะพวกมันมีแนวโน้มที่จะสุ่มและรอให้หัวไดรฟ์เคลื่อนที่
ฉันไม่รู้ขนาดฐานข้อมูลที่เรากำลังพูดถึงที่นี่ แต่มีคุณอาจต้องการที่จะดู HyperOS พวกเขาสร้างดิสก์ข้อมูลที่เป็นเพียงโหลดแรม DDR2 ที่มี SSD หรือดิสก์ 2.5 นิ้วเป็นข้อมูลสำรอง รูปแบบการเข้าถึงของเซิร์ฟเวอร์นั้นไม่สำคัญเลย ฉันจะไม่ใส่ท่อนบนสิ่งนี้แม้ว่า บันทึกเป็นสิ่งที่ทำให้ข้อมูลของคุณสอดคล้องกันพวกเขาจำเป็นต้องใช้สื่อที่เชื่อถือได้และถึงแม้จะมีการสำรอง SSD และแบตเตอรี่และเซิร์ฟเวอร์อาจมียูพีเอส ฯลฯ ฉันก็ยังรู้สึกไม่ง่ายเลยที่จะไม่มีบันทึกของฉันบนฮาร์ดดิสก์จริง ในอาเรย์ RAID ที่ทนต่อความล้มเหลวบางประเภท


1

การดำเนินการแบบสุ่มขนาดเล็กเป็นกรรมตามสนองของดิสก์แบบดั้งเดิมเนื่องจากหัวหน้าค้นหาเวลาแฝง ... SSD นั้นยอดเยี่ยมในการจัดการสิ่งนี้

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


2
SSD นั้นยอดเยี่ยมในการอ่านแบบสุ่มเนื่องจากการค้นหาเวลาเข้าใกล้ที่มีความล่าช้า พวกมันไม่ค่อยคล่องแคล่วในการเขียนแบบสุ่มเนื่องจากการดำเนินการเขียน SSD นั้นเกี่ยวข้องกับการอ่านทั้งบล็อกแฟลช (ปกติคือ 128KB) การปรับเปลี่ยนเนื้อหาและการเขียนบล็อกทั้งหมดกลับไปเป็นแฟลช สำหรับการดำเนินการที่ต่อเนื่องยาวนาน SSD ระดับผู้บริโภคที่ดีกว่า (Intel, OCZ Vertex, Samsung) สามารถอ่านได้มากกว่า 200MB / วินาทีและ 80MB-150MB เขียนเหนือสิ่งที่ดิสก์หมุนเดียวสามารถผลิตได้
John Rose

คุณแน่ใจไหม? ฉันไม่เข้าใจว่าทำไมการดำเนินการเขียนควรเกี่ยวข้องกับการอ่านบล็อกข้อมูลก่อนที่จะเขียนออกมาอีกครั้ง ... ข้อมูลที่จะเขียนควรอยู่ในหน่วยความจำของคอมพิวเตอร์ใช่ไหม
Massimo

2
@Massimo: เพราะระบบปฏิบัติการเขียนเพียงไม่กี่ไบต์ แต่ SSD ทำงานในหน่วย (หน้า) ของ 128KB (ปกติ) มันสามารถเขียนหน้า 128KB เท่านั้นไม่น้อยไปกว่านี้ไม่มีอะไรเพิ่มเติม ดังนั้นเมื่อคุณแก้ไขสมมุติว่าตรงกลางของหน้าไดรฟ์จะอ่านทั้งหน้าอัปเดตตรงกลางแล้วเขียนหน้าใหม่โดยทั่วไปที่อื่นในขณะที่ทำให้ตำแหน่งเดิมใช้การไม่ได้
Cristian Ciupitu

Cristian Ciupitu ถูกต้อง ใน SSD บางตัวสิ่งนี้ถูกลดทอนลงโดยแคชออนบอร์ด (ไดรฟ์ทั้งหมดที่ใช้ตัวควบคุม Indilinx มีแคช 64MB ผมเชื่อว่า) และอาจจะเป็นเพราะการแคชการเขียนของระบบปฏิบัติการหากเปิดใช้งาน แม้ว่าแคช 64MB มีข้อ จำกัด แต่สำหรับเซิร์ฟเวอร์ฐานข้อมูลที่ทำการเขียนจำนวนมาก 64MB อาจไม่เพียงพอ ผู้ผลิตเฟิร์มแวร์ไม่ได้เปิดเผยรายละเอียดจำนวนมาก แต่อย่างใดอย่างหนึ่งจะถือว่าเฟิร์มแวร์ที่ดีกว่า (Intel, Indilinx) ทำการจัดเรียงใหม่ / การจัดเรียงอย่างชาญฉลาดเพื่อให้การเขียนแบบสุ่มขนาดเล็กภายในหน้า 128KB เพื่อลดค่าใช้จ่ายนี้
John Rose

จากความเข้าใจของฉันเกี่ยวกับแคชมันจะช่วยให้คุณประหยัดมากในการเขียนเล็ก ๆ ที่คุณเป็นห่วง มันไม่สำคัญมากนักเนื่องจากฐานข้อมูลได้รับการออกแบบให้ทำการอ่าน / เขียนเชิงเส้นเป็นจำนวนมาก ฉันพนันได้เลยว่า SSD นั้นจะทำงานได้ดีกว่าเนื่องจากเป็นการอ่านแบบเชิงเส้นไม่ใช่แบบทดสอบ ความหมายจะยังคงมีช่องว่างระหว่างข้อมูลและ SSD จะลบเวลาค้นหา
Pyrolistical

0

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

ฉันไม่ได้ทำงานกับ SQL Server มานานดังนั้นฉันจึงไม่แน่ใจว่ามีตัวเลือกเหล่านี้หรือไม่ ฉันได้ทำ Oracle และ DB2 ในช่วงไม่กี่ปีที่ผ่านมาและนี่จะช่วยแก้ปัญหาของคุณได้เนื่องจาก DB จะถูกปรับให้เข้ากับลักษณะของดิสก์อย่างเหมาะสม


0

ฉันขอแนะนำให้จัดพาร์ทิชันที่จัดเก็บไฟล์ฐานข้อมูล

ฉันจะแนะนำให้ตัดสินใจด้วยว่าจะเกิดอะไรขึ้นกับ RAID 0 สำหรับ perf (ldf และ TempDB) และวางข้อมูลที่สำคัญลงใน RAID 1 (mdf)

ประการที่สามคุณควรอัพเดตเฟิร์มแวร์ของไดรฟ์เช่นเดียวกับเฟิร์มแวร์ / ไดรเวอร์คอนโทรลเลอร์ SATA ด้วยการทำเช่นนี้คุณจึงเปิดโอกาสให้ บริษัท ฮาร์ดแวร์และนักพัฒนาซอฟต์แวร์ของพวกเขาเพิ่มประสิทธิภาพความสมบูรณ์แบบสำหรับคุณ


ไม่ควรใช้ RAID 0 สำหรับเซิร์ฟเวอร์ฐานข้อมูล หากไดร์ฟเดียวล้มเหลวฐานข้อมูลจะหยุดทำงานจนกว่าดิสก์จะถูกแทนที่และข้อมูลที่หายไปที่กู้คืนจากเทป (ซึ่งรวมถึงบันทึก)
mrdenny

ในโลกที่ไม่มีเงินวัตถุทุกอย่างควรทำงานบนแคช L1 ที่แบตสำรองไว้ ในอุตสาหกรรมการธนาคารไฟล์ LDF มีความสำคัญเท่ากับไฟล์ mdf สำหรับการคำนวณทางวิทยาศาสตร์ MDF เป็นไฟล์เดียวที่จำเป็นต้องมี 100%
GregC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.