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

28 มิถุนายน 2569อ่าน 6 นาที
Connection Pooling: จัดการการเชื่อมต่อฐานข้อมูลให้ไม่ล้น

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

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

ทำไมเรื่องเล็กนี้ถึงทำให้ระบบล่ม

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

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

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

Connection PoolingDatabasePerformanceScalability

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

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

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

WhaleScope

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

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

อ่านต่อ

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

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

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

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

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

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

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

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