การวางแผนความจุดิสก์และ RAM
การวางแผนความจุของดิสก์และหน่วยความจำสำหรับเซิร์ฟเวอร์ฐานข้อมูลเป็นงานศิลปะสีดำ มากขึ้นดีกว่า เร็วกว่าดีกว่า
ตามแนวทางทั่วไปฉันขอเสนอสิ่งต่อไปนี้:
- คุณต้องการพื้นที่ดิสก์มากขึ้นกว่าที่คุณจะเคยต้อง
ใช้การประเมินพื้นที่ดิสก์ที่คุณต้องการในอีก 3-5 ปีข้างหน้าให้ดีที่สุดแล้วเพิ่มเป็นสองเท่า
- คุณต้องการให้แรมเพียงพอที่จะเก็บดัชนีฐานข้อมูลของคุณในหน่วยความจำจัดการคิวรี่ที่ใหญ่ที่สุดของคุณอย่างน้อยสองครั้งและยังมีพื้นที่เหลือพอสำหรับแคชดิสก์ระบบปฏิบัติการที่ดี
ขนาดดัชนีจะขึ้นอยู่กับฐานข้อมูลของคุณและทุกอย่างอื่นขึ้นอยู่กับชุดข้อมูลและโครงสร้างแบบสอบถาม / ฐานข้อมูลของคุณ ฉันจะเสนอ "ข้อเสนอแนะอย่างน้อย 2 เท่าของตารางที่ใหญ่ที่สุดของคุณ" แต่โปรดทราบว่าข้อเสนอแนะนี้แบ่งย่อยลงในการดำเนินการด้านคลังข้อมูลขนาดใหญ่จริง ๆ ซึ่งตารางที่ใหญ่ที่สุดสามารถมีได้หลายสิบหรือหลายกิกะไบต์
ผู้จำหน่ายฐานข้อมูลทุกรายมีคำแนะนำในการปรับประสิทธิภาพดิสก์ / หน่วยความจำ / เคอร์เนลระบบปฏิบัติการของคุณ - ใช้เวลากับเอกสารนี้ก่อนการปรับใช้ มันจะช่วย.
การเปรียบเทียบภาระงานและการวางแผนกำลังการผลิต
สมมติว่าคุณยังไม่ได้ปรับใช้ ...
ระบบฐานข้อมูลจำนวนมากมาพร้อมกับเครื่องมือการเปรียบเทียบ - ตัวอย่างเช่น
PostgreSQLเรือpgBench
เครื่องมือเหล่านี้ควรเป็นจุดแรกของคุณในการเปรียบเทียบประสิทธิภาพของฐานข้อมูล หากเป็นไปได้คุณควรเรียกใช้บนเซิร์ฟเวอร์ฐานข้อมูลใหม่ทั้งหมดเพื่อให้ได้ความรู้สึกว่า "ฐานข้อมูลสามารถทำงานได้มากแค่ไหน"
ขณะนี้มีเกณฑ์มาตรฐานแบบดิบที่ABSOLUTELY MEANINGLESS
ให้เราพิจารณาวิธีการเปรียบเทียบที่สมจริงยิ่งขึ้น: โหลดสคีมาฐานข้อมูลของคุณและเขียนโปรแกรมที่เติมข้อมูลด้วยข้อมูลจำลองจากนั้นเรียกใช้คิวรีแอปพลิเคชันของคุณกับข้อมูลนั้น
เกณฑ์มาตรฐานนี้มีสามสิ่งสำคัญ: 1. เซิร์ฟเวอร์ฐานข้อมูล (ฮาร์ดแวร์) 2. เซิร์ฟเวอร์ฐานข้อมูล (ซอฟต์แวร์) 3. การออกแบบฐานข้อมูลของคุณและวิธีการโต้ตอบกับ (1) และ (2) ข้างต้น
โปรดทราบว่านี่ต้องใช้ความพยายามมากกว่ามาตรฐานที่สร้างไว้ล่วงหน้าอย่างง่ายเช่นpgBench
: คุณต้องเขียนโค้ดบางอย่างเพื่อทำการเติมข้อมูลและคุณอาจต้องเขียนโค้ดบางอย่างเพื่อทำแบบสอบถามและเวลาดำเนินการรายงาน
การทดสอบประเภทนี้มีความแม่นยำมากยิ่งขึ้น: เนื่องจากคุณทำงานกับสคีมาและเคียวรีของคุณคุณสามารถดูว่าพวกเขาจะทำงานอย่างไรและเปิดโอกาสให้คุณทำโปรไฟล์และปรับปรุงฐานข้อมูล / แบบสอบถามของคุณ
ผลลัพธ์ของการวัดประสิทธิภาพเหล่านี้เป็นมุมมองในอุดมคติของฐานข้อมูลของคุณ เพื่อความปลอดภัยสมมติว่าคุณจะได้รับ 50-70% ของประสิทธิภาพการทำงานนี้ในสภาพแวดล้อมการผลิตของคุณเท่านั้น (ที่เหลือเป็นเบาะที่จะช่วยให้คุณจัดการกับการเติบโตที่ไม่คาดคิดความล้มเหลวของฮาร์ดแวร์การเปลี่ยนแปลงปริมาณงาน ฯลฯ )
สายไปแล้ว! มันอยู่ในการผลิต!
เมื่อระบบของคุณใช้งานจริงมันก็สายเกินไปที่จะ "สร้างมาตรฐาน" - คุณสามารถเปิดการบันทึกแบบสอบถาม / กำหนดเวลาสั้น ๆ และดูว่าจะใช้เวลาดำเนินการนานเท่าใดและคุณสามารถเรียกใช้คำสั่ง "ทดสอบความเครียด" กับชุดข้อมูลขนาดใหญ่ได้ ชั่วโมง คุณยังสามารถดูการใช้งาน CPU, RAM และ I / O (แบนด์วิดท์ของดิสก์) ของระบบเพื่อรับทราบว่ามันมีการโหลดมากเพียงใด
น่าเสียดายที่สิ่งเหล่านี้จะทำให้คุณรู้ว่าระบบกำลังทำอะไรอยู่และแนวคิดที่คลุมเครือว่าใกล้ถึงความอิ่มตัวแล้ว
นั่นนำเราสู่ ...
การตรวจสอบอย่างต่อเนื่อง
มาตรฐานทั้งหมดในโลกจะไม่ช่วยคุณหากระบบของคุณเห็นรูปแบบการใช้งานใหม่ / แตกต่างกันในทันที
สำหรับการปรับใช้ฐานข้อมูลที่ดีขึ้นหรือแย่ลงนั้นไม่คงที่: นักพัฒนาของคุณจะเปลี่ยนแปลงสิ่งต่าง ๆ ชุดข้อมูลของคุณจะเติบโตขึ้น (ดูเหมือนจะไม่หดตัวลง) และผู้ใช้ของคุณจะสร้างชุดค่าผสมของเหตุการณ์ที่คุณไม่เคยคาดการณ์
ในการวางแผนกำลังการผลิตที่เหมาะสมสำหรับฐานข้อมูลของคุณคุณจะต้องใช้การตรวจสอบประสิทธิภาพบางประเภทเพื่อแจ้งเตือนคุณเมื่อประสิทธิภาพของฐานข้อมูลไม่เป็นไปตามที่คุณคาดหวังไว้ ณ จุดนั้นคุณสามารถพิจารณาการดำเนินการแก้ไข (ฮาร์ดแวร์ใหม่, DB schema หรือการเปลี่ยนแปลงแบบสอบถามเพื่อเพิ่มประสิทธิภาพการใช้ทรัพยากร ฯลฯ )
หมายเหตุ: นี่เป็นคู่มือระดับสูงและทั่วไปมากเพื่อปรับขนาดฮาร์ดแวร์ฐานข้อมูลของคุณ หากคุณยังไม่แน่ใจเกี่ยวกับวิธีการตรวจสอบว่าระบบเฉพาะตรงกับความต้องการของคุณคุณควรพูดคุยกับผู้เชี่ยวชาญฐานข้อมูล
นอกจากนี้ยังมีเว็บไซต์ Stack แลกเปลี่ยนทุ่มเทมาโดยเฉพาะเพื่อการจัดการฐานข้อมูล: dba.stackexchange.com ค้นหาที่เก็บคำถามของพวกเขาหรือเรียกดูแท็กเฉพาะสำหรับกลไกจัดการฐานข้อมูลของคุณเพื่อรับคำแนะนำเพิ่มเติมเกี่ยวกับการปรับแต่งประสิทธิภาพ