มีประโยชน์ด้านประสิทธิภาพในการวางไฟล์บันทึกธุรกรรมในไดรฟ์แยกกันหรือไม่?


9

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

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

คำตอบ:


7

แก้ไข. ในทางทฤษฎีถ้าคุณมี 100s ของ DB คุณจำเป็นต้องมี 100 ไดรฟ์หนึ่งสำหรับแต่ละบันทึก ในทางปฏิบัติแม้ว่าจะไม่สนใจกรณีดังกล่าวเกิดขึ้นเมื่อคุณมีฐานข้อมูล 100s คุณจะไม่คาดหวังว่าประสิทธิภาพ TPC ที่ดีที่สุดสำหรับแต่ละฐานข้อมูล คุณอาจจะมี DBs บางส่วนที่มีปริมาณงานสูงและ SLA ที่เข้มงวดและคุณสามารถมีฐานข้อมูลแยกกันในขณะที่ SLA ระดับต่ำกว่าจะอัดข้อมูลลงบนดิสก์ที่ใช้ร่วมกันไม่กี่ตัว


2

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

พิจารณาไฟล์ข้อมูลของคุณ บันทึกลูกค้าอาจมีคำสั่งซื้อจาก 5 ปีที่ผ่านมาและอีกหนึ่งรายการจาก 10 ปีที่ผ่านมา หากคุณลบคำสั่งซื้อเหล่านั้น (บอกว่าคุณกำลังเก็บข้อมูลไว้ที่อื่น) ในสมุดบันทึกปัจจุบันที่คุณลบ 1 และลบ 2 ตามลำดับ อย่างไรก็ตามในไฟล์ข้อมูลของคุณคุณได้สัมผัสบล็อกที่เขียนไว้ 5 & 10 ปีที่แล้ว

ดังนั้นมันจะแน่นอน :)


2

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

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