Read Replica: แยกงานอ่านออกจากงานเขียน เพื่อให้ระบบไหว

29 มิถุนายน 2569อ่าน 6 นาที
Read Replica: แยกงานอ่านออกจากงานเขียน เพื่อให้ระบบไหว

ระบบส่วนใหญ่อ่านข้อมูลบ่อยกว่าเขียนมาก เมื่อฐานข้อมูลเดียวรับทั้งสองไม่ไหว Read Replica คือการทำสำเนาไว้รับงานอ่าน ช่วยให้รายงานและหน้าเว็บเร็วขึ้นโดยไม่กระทบงานเขียน

ในระบบธุรกิจส่วนใหญ่ การอ่านข้อมูลเกิดบ่อยกว่าการเขียนมาก เช่น ลูกค้าดูสินค้าหลายพันครั้ง ต่อการสั่งซื้อจริงหนึ่งครั้ง เมื่อฐานข้อมูลเดียวต้องรับทั้งงานอ่านมหาศาลและงานเขียนไปพร้อมกัน มันจะช้าลงหรือล้ม Read Replica คือการทำสำเนาของฐานข้อมูลหลักไว้อีกชุด เพื่อรับงานอ่านโดยเฉพาะ ส่วนฐานข้อมูลหลักโฟกัสที่งานเขียน ทำให้ทั้งสองไม่แย่งทรัพยากรกัน

ข้อดีและข้อควรระวัง

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

  • ส่งงานอ่านหนัก ๆ เช่น รายงาน ไปที่สำเนา เพื่อไม่กวนงานหลัก
  • อ่านข้อมูลที่ต้องสดที่สุดจากฐานหลัก ไม่ใช่จากสำเนา
  • เข้าใจว่าสำเนาตามหลังเล็กน้อย และออกแบบให้รับได้

Read Replica เป็นหนึ่งในวิธีขยายระบบที่คุ้มค่าและทำได้ก่อนจะไปถึงวิธีซับซ้อนอย่าง Sharding เมื่อเข้าใจว่างานอ่านกับงานเขียนมีลักษณะต่างกัน การแยกมันออกจากกันก็ช่วยให้ระบบรองรับการเติบโตได้อีกมาก โดยไม่ต้องรื้อสถาปัตยกรรมทั้งหมด

Read ReplicaDatabaseScalabilityPerformance

บริการที่เกี่ยวข้อง

รับพัฒนาเว็บแอปพลิเคชัน

สร้างเว็บแอปที่รองรับการเติบโตและเชื่อมกับระบบอื่นได้

WhaleScope

ดูโครงสร้างตลาดของทุกหมวดธุรกิจไทย บน WhaleScope

รายชื่อบริษัท ผู้เล่นรายใหญ่ และอัตราคงอยู่ของแต่ละหมวด — จากข้อมูลจดทะเบียน 2 ล้านนิติบุคคล

อ่านต่อ

Database Index: ทำไมระบบช้าลงเมื่อข้อมูลโต และแก้ได้อย่างไร

ระบบที่เคยเร็วตอนข้อมูลน้อย เริ่มอืดเมื่อข้อมูลโตขึ้น สาเหตุยอดฮิตคือการค้นหาที่ไม่มี Index เข้าใจว่า Index ช่วยอย่างไร และทำไมใส่มากเกินก็เป็นปัญหา

Connection Pooling: จัดการการเชื่อมต่อฐานข้อมูลให้ไม่ล้น

ทุกการเชื่อมต่อฐานข้อมูลมีต้นทุน ถ้าเปิดใหม่ทุกคำขอ ระบบจะช้าและล้มเมื่อคนเยอะ Connection Pooling คือการใช้การเชื่อมต่อซ้ำจากสระกลาง ทำให้เร็วขึ้นและทนโหลดได้มากขึ้น

Database Sharding: แบ่งฐานข้อมูลเมื่อใหญ่เกินเครื่องเดียว

เมื่อข้อมูลใหญ่จนเครื่องเดียวรับไม่ไหว การเพิ่มเครื่องให้แรงขึ้นมีเพดาน Sharding คือการแบ่งข้อมูลออกไปหลายเครื่อง ช่วยให้ขยายต่อได้ แต่ก็เพิ่มความซับซ้อนที่ต้องแลก

N+1 Query: ปัญหายอดฮิตที่ทำให้ระบบช้าโดยไม่รู้ตัว

หน้าจอที่แสดงรายการ 100 รายการ อาจยิงคำขอไปฐานข้อมูลถึง 101 ครั้งโดยไม่จำเป็น นี่คือปัญหา N+1 Query ที่พบบ่อยมาก ฟังดูเล็กแต่ทำให้ระบบช้าลงหลายเท่า