MySQL to 100k+

สรุปจากการอ่านบทความ How Quora scaled MySQL to 100k+ Queries Per Second ?

2023-08-22 20:21:31 - @ratanon

เห็นใน feed มีการ share บทความเรื่อง How Quora scaled MySQL to 100k+ Queries Per Second เป็นการ scale MySQL database ของระบบ Quora ซึ่งเป็นระบบถามตอบปัญหาต่าง ๆ นั่นเอง โดยมีการใช้งานคร่าว ๆ คือ


ข้อมูลต่าง ๆ จะเก็บไว้ใน MySQL นั่นเอง ดังนั้นมาดูกันว่าทางระบบทำการ scale กันอย่างไร

ในการจัดการนั้น จะแบ่งออกเป็น 3 เรื่องตามรูปแบบของการใช้งาน


มารายละเอียดแต่ละหัวข้อดังนี้

เรื่องที่ 1 จำนวนการอ่านข้อมูล (Select)

เนื่องจากระบบ Quora นั้นมีอัตราการอ่านข้อมูลที่สูงมาก ๆ การ scale ด้านอ่านข้อมูลจึงสำคัญมาก ๆ

ซึ่งจะแบ่งการจัดการหรือปรับปรุงเป็น 2 เรื่องหลัก ๆ คือ

โดยรวม ๆ แล้ว ต้องให้ database ทำงานเท่าที่จำเป็นเท่านั้น ไม่ควรให้ทำงานอะไรที่เยอะเกินไป

ยกตัวอย่างเช่น


ส่วนในการใช้งาน caching ก็ต้องระวังการ cache ที่ไม่ดีด้วยเช่นกันไม่ใช่ต้อง caching ข้อมูลทั้งหมดเสมอไป

ใน table ใด มีข้อมูลที่เยอะ ๆ ก็ต้องระวังเพราะว่า เปลือง resource มาก ๆ performance ก็แย่

การ backup ก็ลำบาก


ดังนั้น ต้องเข้าใจก่อนว่าข้อมูลอะไรที่ต้องการใช้งาน หรือ ใช้งานจริง ๆ อะไรที่ไม่ใช้ก็ลบทิ้งไปบ้าง (retention policy) หรือต้อง split ข้อมูลเป็นกลุ่ม ๆ ตามการใช้งานเป็นต้น


ส่วนเรื่องการจัดการ storage ของ database จะใช้งาน RockDB


เรื่องที่ 2 จำนวนการเขียนข้อมูล (Insert, Update, Delete)

ในระบบมีการเขียนข้อมูลที่ไม่เยอะมากนักโดย MySQL จะเป็น cluster (master/slave) ก็ยังมีปัญหาการ sync ข้อมูลจาก master ไปยัง slave ที่ช้า เมื่อมีการใช้งานเยอะขึ้น เลยปรับมาใช้การ sunc แบบ parallel แทน ถ้าส่วนงานไหนที่ต้องเขียนเยอะ ๆ จะใช้งาน HBase แทน รายละเอียดการ optimize database เพิ่มเติม

More Posts