ฉันกำลังตั้งค่าระบบ SaaS ที่เราวางแผนที่จะให้ฐานข้อมูลลูกค้าของพวกเขาแต่ละคน ระบบได้รับการตั้งค่าไว้แล้วเพื่อให้เราสามารถขยายไปยังเซิร์ฟเวอร์เพิ่มเติมได้อย่างง่ายดายหากโหลดมากเกินไป เราหวังว่าจะมีลูกค้าเป็นพันหรือเป็นหมื่น
คำถาม
- มีข้อ จำกัด ในทางปฏิบัติเกี่ยวกับจำนวนฐานข้อมูลขนาดเล็กที่คุณสามารถ / ควรมีใน SQL Server เดียวหรือไม่?
- มันมีผลต่อประสิทธิภาพของเซิร์ฟเวอร์หรือไม่
- มันจะดีกว่าหรือถ้ามี 10,000 ฐานข้อมูลละ 100 MB หรือหนึ่งฐานข้อมูล 1 TB
ข้อมูลเพิ่มเติม
เมื่อฉันพูดว่า "ฐานข้อมูลไมโคร" ฉันไม่ได้หมายถึง "ไมโคร" ฉันแค่หมายถึงว่าเรากำลังตั้งเป้าให้ลูกค้าหลายพันรายดังนั้นแต่ละฐานข้อมูลจะเป็นหนึ่งในพันหรือน้อยกว่าของพื้นที่จัดเก็บข้อมูลทั้งหมด ในความเป็นจริงแต่ละฐานข้อมูลจะอยู่ที่ประมาณ 100MB โดยขึ้นอยู่กับจำนวนการใช้งานที่ได้รับ
เหตุผลหลักในการใช้ 10,000 ฐานข้อมูลเพื่อความยืดหยุ่น ความจริงก็คือ V1 ของระบบมีฐานข้อมูลเดียวและเรามีช่วงเวลาที่อึดอัดเมื่อฐานข้อมูลกำลังถูกบีบให้โหลด
มันกำลังทำให้เครียด CPU, หน่วยความจำ, I / O - ทั้งหมดข้างต้น แม้ว่าเราจะแก้ไขปัญหาเหล่านั้นพวกเขาก็ทำให้เราตระหนักว่าในบางจุดแม้จะมีการจัดทำดัชนีที่ดีที่สุดในโลกหากเราประสบความสำเร็จอย่างที่เราหวังว่าจะเป็นเราก็ไม่สามารถใส่ข้อมูลทั้งหมดของเราได้ ฐานข้อมูล ดังนั้นสำหรับ V2 เรากำลังแบ่งส่วนดังนั้นเราจึงสามารถแยกโหลดระหว่างเซิร์ฟเวอร์ DB หลายตัวได้
ฉันใช้เวลาหนึ่งปีที่ผ่านมาเพื่อพัฒนาวิธีการแก้ปัญหาชิ้นนี้ มันเป็นหนึ่งสิทธิ์การใช้งานต่อเซิร์ฟเวอร์ แต่อย่างไรก็ตามมันก็มีการดูแลตั้งแต่เราใช้ VMs บน Azure เหตุผลที่คำถามเกิดขึ้นในตอนนี้ก็เพราะก่อนหน้านี้เราเสนอให้เฉพาะสถาบันขนาดใหญ่เท่านั้น ลำดับต่อไปของธุรกิจของเราคือรูปแบบการบริการตนเองที่ทุกคนที่มีเบราว์เซอร์สามารถลงทะเบียนและสร้างฐานข้อมูลของตนเองได้ ฐานข้อมูลของพวกเขาจะเล็กลงและมากมายมากกว่าสถาบันขนาดใหญ่
เราได้ลองใช้Azure SQL Database Elastic Poolsแล้ว ประสิทธิภาพค่อนข้างน่าผิดหวังดังนั้นเราจึงเปลี่ยนกลับไปใช้ VM ปกติ