ฉันกำลังจะสมมติว่าในขณะนี้คุณกำลังพยายามที่จะเข้าใจบางส่วนว่าอะไรเป็นตัวกำหนดอัตราการรับส่งข้อมูลในโลกแห่งความเป็นจริงไม่ใช่แค่เชิงทฤษฎี โดยทั่วไปถ้าคุณไม่เขียนไดร์เวอร์อุปกรณ์สำหรับระบบปฏิบัติการเช่นเดียวกับ บริษัท ของฉันเคยทำหรือเขียนเอ็นจิ้นฐานข้อมูลเองรายละเอียดทั้งหมดเหล่านี้เป็นเรื่องเล็กน้อยในปัจจุบัน รายละเอียดที่แท้จริงเหล่านี้ส่วนใหญ่ถูกปกปิดกรองชดเชยและซ่อนเร้นโดยปัจจัยหลายอย่างของฮาร์ดแวร์และระบบปฏิบัติการดังนั้นคุณจึงไม่สามารถสังเกตสิ่งที่เกิดขึ้นได้โดยตรง
ยังคงเข้าใจในสิ่งที่เป็นสาเหตุและไม่ก่อให้เกิดปัญหาด้านประสิทธิภาพที่สำคัญ
"อัตราการอ่านข้อมูล" โดยเฉลี่ยสำหรับฐานข้อมูลส่วนใหญ่จะขึ้นอยู่กับขนาดของ IO ที่คุณกำลังย้ายในครั้งเดียวและถ้ามันต่อเนื่องกันหรือไม่ นอกจากนี้ยังขึ้นอยู่กับดิสก์ด้วยตัวเองรายงานพารามิเตอร์ฮาร์ดแวร์ที่แท้จริงซึ่งมักจะจำลองเท่านั้น (ตัวอย่างเช่นมีภาค 600 แทร็กต่อแทร็คหรือไม่เนื่องจากแทร็กภายนอกของดิสก์มีขนาดใหญ่กว่ามากดิสก์ใด ๆ ในช่วง 30 ปีที่ผ่านมาจะมีเซกเตอร์เพิ่มเติมบนแทร็กภายนอกมากกว่าด้านใน) นี่คือตัวอย่างประสิทธิภาพ นี่คือพารามิเตอร์ที่แท้จริง:
การอ่านฐานข้อมูล: โดยปกติหมายถึงหมายเลขเซ็กเตอร์จะอ่านแบบสุ่มทั่วดิสก์ (สันนิษฐานว่า 1024 ไบต์ของ 2 ส่วนต่อเนื่อง 512 ส่วน) และไม่มีส่วนใดในหน่วยความจำหรือแคชอื่น ๆ : ในกรณีนี้อัตราข้อมูลเฉลี่ยของคุณ จะเป็น:
10 MS = การเปลี่ยนตำแหน่งของ Head Seek: (โปรดทราบว่านี่หมายความว่าคุณสามารถทำการค้นหาได้ 100 ครั้งใน 1 วินาทีเท่านั้นและ 100 KB / Sec จะเป็น FASTEST ที่เร็วที่สุดที่คุณสามารถอ่าน 1024 แบบสุ่ม)
1 MS = คำสั่งค่าโสหุ้ย = ไม่ทราบ: สิ่งนี้เคยมีความสำคัญมากถึง 8 MS วันนี้มีแนวโน้มที่จะขึ้นกับระบบปฏิบัติการของคุณมากขึ้นประมวลผลคำขอของคุณอย่างมีประสิทธิภาพ ดังนั้นหากระบบของคุณทำการแลกเปลี่ยนกับดิสก์จำนวนมาก MB ระบบของคุณจะช้าลงอย่างมาก IO ไปและกลับจากดิสก์วันนี้มีโอกาสน้อยกว่า MS สิ่งนี้สามารถทดสอบได้อย่างง่ายดายด้วย SSD เพื่อจำลองบัสค่าใช้จ่ายของบัส HD และเฟิร์มแวร์ โดยรวมแล้วที่นี่จะเป็นเวลาที่จะเปลี่ยนหัวอ่านสมมติว่าคุณอยู่ในแทร็กหรือทรงกระบอกที่ถูกต้องแล้ว รวมถึงการส่งคืนข้อมูลที่ถูกย้ายไปยังระบบปฏิบัติการ ดูเวลาการขัดจังหวะ CPU ทั้งหมดของคุณยังคงอยู่ <1% ซึ่งสามารถระบุปัญหาฮาร์ดแวร์ดิสก์ เดาป่า? <1 มิลลิวินาทีซึ่งยังคงมีนัยสำคัญ
3.3 MS = หมุนจนกว่าภาคจะอยู่ภายใต้หัวข้อ: 9000 RPM / 60 วินาที = 6.67 MS อัตราต่อรองของการอยู่ใกล้ที่สุดหรือไกลที่สุดคือ 50% ดังนั้นความล่าช้า 3.33 MS สำหรับแต่ละ IO หมายเหตุ: นั่นหมายความว่าการอ่านแบบสุ่มถ้าหัวอยู่ในตำแหน่งที่ถูกต้องแล้วจะยังคงอยู่ที่ 3.33 MS และหมายความว่าอัตราข้อมูลสูงสุดของคุณต้องไม่เกิน 300 KB / วินาทีที่ 1k IO
0.022 MS = เวลาอ่านหัว: 6.67 MS / 600 ส่วน * 2 = 1024 อ่าน ==> 0.022 MS ซึ่งหมายความว่าอัตราข้อมูลสูงสุดของดิสก์นี้คือ 1 / 0.022 MS = 45,000 * 1024 = 46 MB / วินาที สำหรับการอ่าน / สืบค้นฐานข้อมูลสิ่งนี้ไม่มีนัยสำคัญอย่างสมบูรณ์ในขณะที่ถ้าการย้ายฐานข้อมูลทั้งหมดจะเป็นปัจจัยที่สำคัญที่สุด
ดังนั้นในกรณีนี้อัตรา "การอ่านฐานข้อมูล" ของคุณจะเป็น ~ 14.355 MS = 70 KB / วินาที โปรดทราบว่าหาก IO เท่ากับ 512 (ละเว้น. 022 MS) อัตราจะเท่ากับครึ่งหนึ่ง ใช้ 2,048 และอัตราเป็นสองเท่า ดังนั้นพารามิเตอร์ที่สำคัญที่สุดคือขนาดของเซ็กเตอร์ที่ต่อเนื่องกันจนกระทั่งคุณได้อ่านเต็มแทร็ก (สมมติว่าเซกเตอร์ของดิสก์ทั้งหมดนั้นต่อเนื่องกัน)