Connection Pooling sinh ra để làm gì?

Khi làm việc với cơ sở dữ liệu cho những hệ thống tương đối lớn thì vấn đề rất quan trọng đó là đảm bảo yêu cầu hiệu năng cao. Một trong những vấn đề cần thiết nhất đó là phải xử lý để tối ưu số kết nối tới cơ sở dữ liệu. Đối với lập trình viên mới vào nghề, bình thường với mỗi client request sẽ mở 1 kết nối tới database server và rồi lại đóng lại. Việc tạo và hủy các kết nối tới DB sẽ ảnh hưởng rất nhiều tới hiệu năng của ứng dụng bởi chúng cần thực hiện tiến trình quản lý tài nguyên cơ sở dữ liệu. Điển hình là database server sẽ mất từ 1 đến 3s để thiết lập kết nối tới DB (trong bao gồm giao tiếp với server, chứng thực, và còn cả tá tác vụ khác). Và việc này cần thực hiện cho mỗi yêu kết nối tới server, nó sẽ không thể đáp ứng cho ứng dụng hiệu năng cao được. Vậy giải pháp được đưa ra bởi các nhà cung cấp đó là phải quản lý và chia sẻ số kết nối – đó chính là kỹ thuật connection pooling.

Vậy Connection pool là gì?

Connection pooling (tạm dịch là vùng kết nối) : là kỹ thuật cho phép tạo và duy trì 1 tập các kết nối dùng chung nhằm tăng hiệu suất cho các ứng dụng web bằng cách sử dụng lại các kết nối khi có yêu cầu thay vì việc tạo kết nối mới.

Connection pooling

Connection pooling làm việc như thế nào?

CPM (Connection pool Manager) là trình quản lý vùng kết nối sẽ duy trì và vận hành 1 tập các kết nối cơ sở dữ liệu. Mỗi khi có yêu cầu kết nối tới cơ sở dữ liệu, CPM sẽ kiểm tra xem có kết nối nào đang rỗi, nó sẽ lấy kết nối đó ra thực hiện yêu cầu. Nếu tất cả các kết nối trong CPM đều bận và pool chưa đầy (chưa đạt tới max số kết nối quy định trước) thì 1 kết nối mới sẽ được tạo ra và được CPM đưa vào Pool . Khi Pool đầy thì các kết nối tiếp theo sẽ bị đưa vào hàng đợi, chờ đến khi nào có 1 kết nối trong Pool bị timeout hoặc chuyển sang trạng thái sẵn sàng.