- vừa được xem lúc

Tại sao chúng ta cần Database Connection Pool?

0 0 25

Người đăng: Marco Dương

Theo Viblo Asia

Trong bài viết này chúng ta sẽ tìm hiểu về Database Connections và vòng đời của chúng. Tiếp theo chúng ta sẽ tìm hểu Connection Pool và vòng đời của chúng và tại sao chúng ta cần sử dụng chúng.

Database Connection là gì?

Bất kì ứng dụng phần mềm nào cũng cần lưu data ở Database và để ứng dụng có thể tương tác với 1 database server thì chúng ta cần Database Connection. Database Connection là cách để ứng dụng tương tác với DB và chúng ta sử dụng connection để gửi command (SQL) đến DB và nhận kết quả trả về từ DB.

DB application thì luôn chạy trên một cái server chuyên dụng gọi là Database server, nó khác với application server. Database application chạy trên 1 port trên Database Server. Trên đó application server có thể gửi command (SQL) và nhận data.

Bất cứ khi nào Client ( browser hay mobile app) request data từ Backend Application. Backend Application sẽ nói với Database trả dữ liệu và Backend trả response cho Client. Nếu Backend Application want to connect to DB Server, nó cần tạo 1 lời gọi dựa trên TCP-IP protocol với DB Server IP và Port và credentials (username, password của DB). Quá trình Application Server connect đến DB Server để lấy dữ liệu đạt được thông qua 1 cơ chế gọi là Database Connection.

Một khi connection đến Database được tạo, nó có thể open và close bất kì lúc nào và chúng ta cũng có thể set timeout cho chúng (connection).

Nếu mà ko có connection thì việc giao tiếp với database không thể thực hiện. Tạo một Database Connection là một hoạt động tốn kém.

Vòng đời của 1 Database Connection

Chúng ta có thể xem chi tiết về Database Connection ở hình dưới.

  • Mở connection đến database sử dụng Connection String
  • Authenticating trước khi thiết lập connection
  • Khởi tạo và mở 1 TCP socket cho đọc và ghi data
  • Gửi và nhận data trên socker socket
  • Đóng database connection
  • Đóng TCP socket

Quá trình tạo connection đến Database là quá nhiều bước là hoạt động đắt đỏ và tốn thời gian. Nếu ứng dụng của bạn tăng trưởng về người dùng và bạn mở connection mỗi request, số connection được tạo đồng thời tại 1 thời điểm tăng lên và nó sẽ làm tăng CPU, Ram, Database có thể bị treo việc đó là rất nguy hiểm.

Đó là lí do mà chúng ta dùng Connection Pool bằng cách không tạo connection mỗi request và sử dụng lại connection đã tồn tại. Nếu không có connection nào tồn tại trong Pool thì sẽ tạo mới.

Database Connection Pool là gì?

Connection Pool là một phương pháp để làm tăng hiệu năng của hệ thống cho vấn đề khởi tạo connnection. Connection Pool là Pool của Database Connection, nó có thể được tạo trước khi mà application được khởi chạy và chia sẻ Connection khi Application cần truy cập vào Database.

1 Database Connection được tái sử dụng từ Connection Pool như thế nào?

Hình bên dưới đã mô tả chi tiết cách mà 1 connection được tái sử dụng.

Tại sao cần Connection Pool?

  • Database Connection được khởi tạo với chi phí đắt đỏ, nên thay vì tạo chúng ở mỗi request thì ta sẽ khởi tạo trước và gọi đến bất cứ khi nào cần truy cập vào Database.
  • Database là tài nguyên được chia sẻ, do đó việc tạo 1 pool của connections và chia sẻ chúng trên tất cả các transaction là điều hợp lý.
  • Datatabase Connection Pool thì giới hạn lượng truy cập vào Database tại 1 thời điểm giúp giảm thiểu việc Database Server bị treo.

Bình luận

Bài viết tương tự

- vừa được xem lúc

HikariCP - Best Practice in Manage Connection Pool

1. Giới thiệu HikariCP. Ở bài trước, mình có nói về max_connections. Để hiểu về HikariCP là gì có thể tham khảo 1 bài viết này.

0 0 269

- vừa được xem lúc

Connection pool

Khi viết một server application mà nó connect đến Database bạn thường xuyên gặp phải đối phó connection pools. Quá nhiều connections.

0 0 20

- vừa được xem lúc

Nhập môn lý thuyết cơ sở dữ liệu - Phần 1 : Tổng quan

# Trong bài viết này mình sẽ tập trung vào chủ đề tổng quan về Cơ sở dữ liệu. Phần 1 lý thuyết nên hơi chán các bạn cố gắng đọc nhé, chắc lý thuyết mới làm bài tập được, kiến thức còn nhiều các bạn cứ

0 0 110

- vừa được xem lúc

002: Hiểu về Index để tăng performance với PostgreSQL P1

Bài viết nằm trong series Performance optimization với PostgreSQL. Từ bài này sẽ liên quan nhiều đến practice nên các bạn chuẩn bị env và data trước.

0 0 500

- vừa được xem lúc

003: Hiểu về Index để tăng performance với PostgreSQL P2

Bài viết nằm trong series Performance optimization với PostgreSQL. . . B-Tree index.

0 0 527

- vừa được xem lúc

010: Exclusive lock và Shared lock

Bài viết nằm trong series Performance optimization với PostgreSQL. Nếu execute single query:. UPDATE TABLE X SET COLUMN = 'Y' WHERE ID = 1;. .

0 0 50