กำลังวางธุรกรรมเข้าสู่ระบบแยกปริมาณ [สถานะของแข็ง]?


12

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

(ขออภัยสำหรับการตีความที่ไร้เดียงสาเพียงแค่พยายามเข้าใจสิ่งที่ฉันอ่าน)

เมื่อคำนึงถึงสิ่งนี้ ... มันเกิดขึ้นกับฉันที่ไดรฟ์โซลิดสเตทไม่มีเข็มและจานรองเล็ก ๆ หากทั้งฐานข้อมูลและบันทึกธุรกรรมของฉันอยู่บนไดรฟ์โซลิดสเตท RAID 5 จากแปดตัวเดียวจะมีข้อดีที่จะย้ายบันทึกธุรกรรมไปยังโวลุ่มแยกต่างหากหรือไม่? หากการเพิ่มประสิทธิภาพที่คาดคะเนขึ้นอยู่กับข้อสรุปของการเขียนตามลำดับลดระยะทางที่เข็มเคลื่อนที่และจานหมุนและไดรฟ์โซลิดสเตตไม่มีชิ้นส่วนที่เคลื่อนไหวเหล่านี้ฉันจะได้อะไรจากการแยกบันทึก


คุณยังคงมีรถเมล์และบัฟเฟอร์ที่ต้องพิจารณา ฉันแยกพวกมันออกจากกันเนื่องจากรูปแบบ I / O ต่างกัน หากแอปของคุณไม่ทำธุรกรรมมากคุณอาจไม่ทราบถึงความแตกต่างหากต้นทุนเป็นปัญหา
Eric Higgins

เมื่อคุณใช้คำว่า "บัส" ... คุณหมายถึงเส้นทางที่ข้อมูลใช้จากเมนบอร์ดไปยังการ์ด RAID หรือไม่
แช้ดฉูดฉาด

2
"มีข้อผิดพลาดใด ๆ ในการย้ายบันทึกธุรกรรมไปยังไดรฟ์ข้อมูลแยกต่างหากหรือไม่" เกือบจะไม่แน่นอน แต่จริงๆแล้วมีความเร็วในการย้ายทั้งอาเรย์ 10 ไปยัง RAID10 และความน่าเชื่อถือในการจัดสรรพื้นที่ส่วนเกิน (เช่นการแบ่งพาร์ติชัน) SSDs
แจ็คบอกว่าลอง topanswers.xyz

คำตอบ:


10

คำตอบสั้น ๆ ใช้อาร์เรย์เดียวไม่น่าจะมีประสิทธิภาพเพิ่มขึ้นจากการแยกบันทึกจากข้อมูลในไดรฟ์ SSD 8 ตัว ดูSQL บน SSDs: Hot and Crazy Loveสำหรับรายละเอียดเพิ่มเติม (และความบันเทิง) เกี่ยวกับ SSD ให้ความสนใจเป็นพิเศษกับหมายเหตุเกี่ยวกับความล้มเหลวที่สัมพันธ์ของ SSD

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

ความคิดเห็นเกี่ยวกับแบนด์วิดท์บัสไม่เกี่ยวข้อง หากคุณต้องการเปลี่ยน IO มากนั่นแสดงว่าคุณมีปัญหาที่ใหญ่กว่าที่ต้องกังวล


-4

มีกลุ่มหนึ่งที่เห็นด้วยกับ HDD ว่ามันจะเป็นประโยชน์ในการแยกพวกเขายังคงอ้างว่าสำหรับไดรฟ์ SSD ซึ่งไม่จำเป็นอีกต่อไป

ดังนั้นสำหรับพวกเขาฉันอยากถามว่า "ถ้าไม่มีปัญหาเรื่องความขัดแย้งแล้วทำไม RAID 10 ล่ะไม่ต้องลอกอีกต่อไป! ดังนั้นการสร้างความวุ่นวายเพียงอย่างเดียวก็เพียงพอแล้วและแน่นอนไม่จำเป็นต้องมี 8 ไดรฟ์ 2x ฐานข้อมูล ขนาดควรพอเพียง! "

อย่างไรก็ตามความจริงก็คือถ้าสิ่งที่ต้องการ RAID 10 เป็นไฟล์บันทึก!

นี่ไม่ใช่เพียงเพราะปัญหาของการเรียงตามลำดับเทียบกับการสุ่ม (ดูแหล่งข้อมูลด้านล่าง) แต่จริงๆแล้วมันสำคัญมากเมื่อคุณเข้าใจว่าไดรฟ์ SSD ทำงานอย่างไร

หากต้องการให้เรื่องราวสั้น ๆ สั้น ๆ (สำหรับคำอธิบายที่ยาวขึ้นดูที่ http://arstechnica.com/information-technology/2012/06/inside-the-ssd-revolution-how-solid-state-disks-really-work/ ) ไดรฟ์ SSD นั้นมีประสิทธิภาพมากในการอ่านและในการเขียนเลขศูนย์อย่างไรก็ตามการเขียนออกมันไม่ได้มีประสิทธิภาพมากเพราะมันต้องลบทั้งส่วนเพื่อเขียนแม้แต่อันเดียว!

แม้ว่านี่จะไม่ใช่ปัญหาสำหรับการเขียนทั่วไปเนื่องจากมันถูกบัฟเฟอร์ในหน่วยความจำและเขียนออกมาในขอบเขตของหน้า แต่ก็เป็นปัญหาสำคัญสำหรับไฟล์บันทึกเนื่องจากไฟล์บันทึกถูกข้ามแคชใด ๆ และแทนเซิร์ฟเวอร์ SQL จะบล็อกจนกว่าจะ บันทึกจะถูกเขียนลงดิสก์! ซึ่งหมายความว่าสำหรับการเขียนแต่ละครั้งอาจจะมีการลบส่วนเต็ม

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

คำตอบที่เก่ากว่า

คำตอบคือใช่ด้วยเหตุผลสามประการ 1) Random vs Sequential - แม้ว่าจะชัดเจนว่า SSD เพิ่มประสิทธิภาพอย่างมากสำหรับการเขียนแบบสุ่ม แต่ยังคงเป็นปัญหาของการสุ่มเทียบกับการเรียงตามลำดับตามที่เห็นได้จาก Whitepapaers และลิงค์ต่อไปนี้:

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

3) การโต้แย้งการเขียน - เหตุผลในการใส่บันทึกในแกนหมุนของตัวเองไม่เพียงเพราะการสุ่มเทียบกับลำดับ แต่ยังเพราะการเขียนการแข่งขันเนื่องจากเราสามารถเห็นได้จากข้อเท็จจริงที่ว่ามันแนะนำให้มี tempdb ในปริมาณที่แยกต่างหากซึ่งบ่งชี้ ว่าปัญหาที่นี่ยังเกี่ยวกับการเขียนการแข่งขัน

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

ในความเป็นจริงสำหรับบันทึกคุณอาจใช้ไดรฟ์ HDD ปกติเป็นกระดาษสีขาวของ apr Dell ที่http://www.dell.com/downloads/global/products/pvaul/en/ssd_vs_hdd_price_and_performance_study.pdf

แก้ไข

Microsoft แนะนำให้วาง tempdb ลงในอาร์เรย์ของตัวเองเพื่อหมุนดิสก์

และอื่น ๆ มากมายและเป็นแนวคิดที่ยอมรับกันโดยทั่วไปใน SQL Server ในขณะที่ไม่มีใครแสดงปัญหากับการแบ่งอาร์เรย์

ยิ่งกว่านั้นทีม SQL Server ได้สร้างแนวคิดของ Filegroup และ Partioining partitioning โดยมีความตั้งใจเพียงอย่างเดียวที่จะสามารถย้ายพวกเขาในอาร์เรย์ที่แยกต่างหาก

และอันที่จริงแล้ว MSDN ที่http://msdn.microsoft.com/en-us/library/ms187087(v=sql.105)แนะนำว่าอาจมีประโยชน์ด้านประสิทธิภาพจากการแยกดัชนี nonclustered ในอาร์เรย์ของตัวเอง (แม้ว่า สิ่งนี้ไม่ควรเป็นคำแนะนำทั่วไปสำหรับทุกสถานการณ์เฉพาะสำหรับปริมาณงานเฉพาะดูข้อมูลเพิ่มเติมได้ที่http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA -Monkey.aspx )

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

ในขณะที่บางคนอาจไม่เห็นด้วยกับคำแนะนำนั้นและพิจารณาว่าไม่มีประโยชน์ในการวาง tempdb และระดับเสียงของตัวเอง (เช่น Jack Douglas) และคุณอาจอ้างว่าไม่มีประโยชน์จากการแยกไฟล์บันทึก (เช่น Mark Storey -Smith) และแทนที่จะอ้างว่าการแบ่งอาเรย์นั้นแย่กว่านั้นอีกมากอย่าลืมว่านี่เป็นวิธีการใหม่ที่ขัดแย้งกับแนวทางที่ได้รับการยอมรับโดย Microsoft และชุมชนโดยทั่วไปและจนถึงขณะนี้ยังไม่มีใครให้ลิงก์ไปยัง การทดสอบเกณฑ์มาตรฐานเพื่อสนับสนุน

ดังนั้นคำพูดของฉันสำหรับผู้ลงคะแนนเสียงทั้งหมดคือฉันพบว่ามันผิดจรรยาบรรณมากในการ downvote โพสต์เพียงเพราะมีความคิดเห็นที่แตกต่างจากของคุณโดยเฉพาะอย่างยิ่งเมื่อ 1) ความคิดเห็นของคุณขัดแย้งกับทฤษฎีทั่วไปที่ยอมรับ 2) และขัดต่อผู้ขาย ) เอกสารของตัวเอง 3) และคุณไม่ได้แสดงหลักฐานใด ๆ

แต่ในกรณีนี้มันไร้สาระยิ่งกว่าเนื่องจากโพสต์ของฉันไม่มีอะไรมากไปกว่าการขยายตรรกะในทฤษฎีนี้ดังนั้นคนที่คิดว่าโพสต์นี้เป็นคำแนะนำบนเตียงจำเป็นต้องกลับไปโพสต์ทั้งหมดที่แนะนำทฤษฎีนี้ .

ถ้ามีคนตัดสินใจว่า RAID เป็นทฤษฏีของโรงเรียนเก่าและลงคะแนนโพสต์ทั้งหมดแนะนำให้ทำเช่นนี้ทำให้รู้สึกได้อย่างไร


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