วันนี้เรามาดูกันว่า Connection Pool คืออะไร ทำงานอย่างไร และเราจะนำไปใช้ในโปรเจกต์ได้ยังไง
Connection Pool คืออะไร?
Connection Pool คือกลไกที่ช่วยจัดการ connections ระหว่างแอปกับฐานข้อมูล หรือบริการอื่นๆ โดยสร้าง connection ล่วงหน้าไว้จำนวนหนึ่ง และนำกลับมาใช้ซ้ำเมื่อจำเป็น แทนที่จะสร้าง connection ใหม่ทุกครั้ง ช่วยลดเวลาและทรัพยากรที่ใช้ในการเชื่อมต่อ
ลองนึกภาพว่า Connection Pool เหมือน "ร้านกาแฟที่จ้างบาริสต้าจำนวนหนึ่งล่วงหน้า" เพื่อพร้อมให้บริการลูกค้าโดยไม่ต้องจ้างใหม่ทุกครั้ง (เปรียบได้กับการสร้าง connection ใหม่)
ทำไม Connection Pool สำคัญ?
- ลดเวลาในการเชื่อมต่อ : การสร้าง connection ใหม่ทุกครั้งใช้เวลา การใช้ Connection Pool จะช่วยลด overhead ตรงนี้
- เพิ่มประสิทธิภาพ : แอปสามารถรองรับคำสั่ง query พร้อมกันจำนวนมากได้ดีกว่า
- ลดการใช้ทรัพยากร : ช่วยประหยัด CPU และ memory บนเซิร์ฟเวอร์ฐานข้อมูล
การทำงานของ Connection Pool
- เมื่อแอปต้องการ query ฐานข้อมูล จะดึง connection ที่พร้อมใช้งานจาก pool
- หาก connection ใน pool หมด แอปจะรอจนกว่าจะมี connection ว่าง
- เมื่อใช้งานเสร็จ connection จะถูกคืนกลับไปยัง pool
ตัวอย่างการใช้ Connection Pool (Node.js + MySQL)
const mysql = require('mysql2');
// สร้าง Connection Pool
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'password',
database: 'my_database',
waitForConnections: true, // รอ connection หากไม่มีว่าง
connectionLimit: 10, // จำนวน connections สูงสุดใน pool
queueLimit: 0, // ไม่จำกัดคำสั่งที่รอคิว
});
// ใช้ Connection Pool ในการ Query
pool.query('SELECT * FROM users', (err, results) => {
if (err) {
console.error('Error executing query:', err);
return;
}
console.log('User data:', results);
});
// ปิด Pool เมื่อไม่ใช้งาน
pool.end((err) => {
if (err) console.error('Error closing pool:', err);
else console.log('Pool closed successfully.');
});
สรุป
Connection Pool คือหัวใจสำคัญที่ช่วยให้แอปสามารถจัดการ connection ได้อย่างมีประสิทธิภาพ โดยลดเวลาในการเชื่อมต่อและเพิ่มความสามารถในการรองรับการใช้งานพร้อมกัน